类成员:
#字段
- 普通字段,保存在对象中,执行只能通过对象访问
- 静态字段,保存在类中,执行可以通过对象访问,也可以通过类访问
#方法
- 普通方法,保存在类中,由对象来调用,self -> 对象
- 静态方法,保存在类中,由类直接调用
- 类方法,保存在类中,由类直接调用, cls -> 当前类
class Foo: c = 'ccc' def bar1(self): print('bar1') @staticmethod def bar2(): #静态方法相当于函数,不用创建对象就能直接调用。静态方法可以没有参数 print('bar2') @staticmethod def bar3(a,b): #静态方法也可以带参数 print(a+b) @classmethod def clsmd(cls): #类方法至少有一个参数,自动将类名传进了该参数 print('ClsmD') @property # 添加了装饰器@property,下面的方法变成了“属性” def per1(self): print('PeR') return 10 @per1.setter #属性名.setter,外部重新给属性赋值时用于给接收该值 def per1(self,value1): print(value1) @per1.deleter #引入setter/deleter是为了模仿字段可以进行修改、删除,实际setter/deleter下执行什么完全可以自行定义不一定是修改、删除动作 def per1(self): print('DeletE') obj = Foo() print('1#############################################') obj.bar1() #对象调用方法 print('2#############################################') Foo.bar1(obj) #类调用方法 print('3#############################################') obj.bar2() print('4#############################################') Foo.bar2() print('5#############################################') obj.bar3(1,2) print('6#############################################') Foo.bar3(3,4) print('7#############################################') print(obj.c) #对象调用静态字段,如果静态字段被修改,其他对象调用该字段时都是被修改过的字段 print('8#############################################') Foo.clsmd() print('9#############################################') obj.per1 #调用属性时不用加() print('10#############################################') ret = obj.per1 print(ret) #属性有字段的特性,也有方法的特性,即可以不加()调用也可以传递返回值 #obj.per1 = 'pEr' #没有setter时,属性不能这样直接赋值 print('11#############################################') obj.per1 print('12#############################################') obj.per1 = 4321 print(obj.per1) print('13#############################################') del obj.per1
输出:
1#############################################
bar1
2#############################################
bar1
3#############################################
bar2
4#############################################
bar2
5#############################################
3
6#############################################
7
7#############################################
ccc
8#############################################
ClsmD
9#############################################
PeR
10#############################################
PeR
10
11#############################################
PeR
12#############################################
4321
PeR
10
13#############################################
DeletE
浙公网安备 33010602011771号