类成员:
#字段
- 普通字段,保存在对象中,执行只能通过对象访问
- 静态字段,保存在类中,执行可以通过对象访问,也可以通过类访问
#方法
- 普通方法,保存在类中,由对象来调用,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

posted on 2021-12-09 14:50  csy113  阅读(45)  评论(0)    收藏  举报