1. 类的成员 class Foo: # 方法 def __init__(self,name): # 实例变量/字段 self.name = name # 方法 def func(self): pass # obj,Foo类的对象 # obj,Foo类的实例 obj = Foo(‘朱奎峰‘) 成员共分为三类: 变量: - 实例变量(字段) - 公有实例变量(字段) - 私有实例变量(字段) - 类变量(静态字段) - 公有类变量(静态字段) - 私有类变量(静态字段) 实例一: class Foo: # 类变量(静态字段) country = "中国" def __init__(self,name): # 实例变量(字段) self.name = name def func(self): pass obj1 = Foo(‘季红‘) obj2 = Foo(‘王晓东‘) Foo.country 思考题: 如何验证儿子都不知道私有字段的存在. 无法访问: class Base(object): __secret = "受贿" class Foo(Base): def func(self): print(self.__secret) print(Foo.__secret) obj = Foo() obj.func() 可以访问: class Base(object): __secret = "受贿" def zt(self): print(Base.__secret) class Foo(Base): def func(self): print(self.__secret) print(Foo.__secret) obj = Foo() obj.zt() 方法: - 实例方法 class Foo(object): def __init__(self, name): self.name = name # 实例方法 def func(self): print(self.name) obj = Foo(‘..‘) obj.func() - 静态方法 class Foo(object): def __init__(self, name): self.name = name # 静态方法,如果方法无需使用对象中封装的值,那么就可以使用静态方法 @staticmethod def display(a1,a2): return a1 + a2 Foo.display(1,3) - 类方法 class Foo(object): # 类方法,cls是类 @classmethod def show(cls,x1,x2): print(cls,x1,x2) # 执行类方法 Foo.show(1,8) 面试题: 静态方法/类方法和实例方法的区别? 属性(通过方法改造出来): 示例: class Foo(object): def __init__(self): pass @property def start(self): return 1 @property def end(self): return 10 obj = Foo() print(obj.start) print(obj.end) """ # 总结: # 1. 编写时 # - 方法上方写 @property # - 方法参数:只有一个self # 2. 调用时:无需加括号 对象.方法 # 3. 应用场景: 对于简单的方法,当无需传参且有返回值时,可以使用 @property """
原文地址:https://www.cnblogs.com/journey-mk5/p/9550951.html
时间: 2024-11-05 13:31:50