今日内容:
1.属性
2. 类方法
3.静态方法
4.反射
1. 属性
是指调用类中的函数,就像调用对象属性值一样调用.更权威解释:将方法 伪装 成属性,虽然在代码层面上没有任何高深之处,但是让其看起来更合理.
示例:
class A: def __init__(self,*args): self.name = args[0] self.height = args[1] self.weight = args[2] @property def bmi(self): return self.height /self.weight**2 a1 = A("leon",1.72,60) print(a1.bmi)
注意,这里是通过加@property 这个装饰器来实现的,
即然是属性,那么也可以修改的,关于修改和删除,是通过下面方法实现的,
示例:
class B: def __init__(self,*args): self.name = args[0] self.__pwd = args[1] @property def pwd(self): return self.__pwd @pwd.setter #注意这里的装饰器名字和上面的函数名一致,以及下面的函数都是一致的,下面赋值会传入这个new_pwd里面 def pwd(self,new_pwd): self.__pwd = new_pwd obj1 = B("leon","hao123") obj1.pwd = 123456 print(obj1.pwd)
属性的删除操作示例:
class B: def __init__(self,*args): self.name = args[0] self.__pwd = args[1] @property def pwd(self): return self.__pwd @pwd.setter #注意这里的装饰器名字和上面的函数名一致,以及下面的函数都是一致的,下面赋值会传入这个new_pwd里面 def pwd(self,new_pwd): self.__pwd = new_pwd @pwd.deleter def pwd(self): del self.__pwd obj1 = B("leon","hao123") obj1.pwd = 123456 print(obj1.pwd) del obj1.pwd print(obj1.pwd)
具体操作流程如下:
# 第一步,对属性进行改操作,自动执行 被这个@pwd.setter装饰器装饰的方法
# 第二步,将新值传给这个被@pwd.setter装饰器装饰的方法里面,当做参数.
2. 类方法,静态方法
类方法:类名去调用类方法,自动将类的空间传给类方法中的cls..对象如果调用类方法,自动将类空间传给类中的cls
示例:
class C: num = 1 def __init__(self,*args): self.name = args[0] self.age = args[1] @classmethod def class_fun(cls): print(cls.num) c1 = C("leon",18) c1.class_fun()
什么情况下使用类方法?
直接让类去操作类中的方法,没有必要创建对象在操作的时候,用类方法.
3. 静态方法
静态方法:在类中定义一个静态方法,无需传入你的类空间,对象空间,可以当成普通函数去用.(也就是不用再传入self的,也就是类中的独立函数)
示例:
class D: def __init__(self): pass @staticmethod def fun(a,b): return a + b d1 = D() print(d1.fun(2,3))
4.反射(非常非常重要,)
反射:通过 字符串 操作一个空间 (对象).
总共有四个方法:
1.getattr()
2.hasattr()
3.setattr()
4.delattr()
四种场景的不同使用方法:
1,实例化一个对象去研究
原文地址:https://www.cnblogs.com/ahliucong/p/9259686.html
时间: 2024-11-05 23:29:27