标签:生活 span function 类变量 初始化 close 共享 类的属性 oop
结构
classs 类名:
类体
__init__
函数, __init__ 并不会创建对象,但会初始化对象例子:
1 class E: 2 NAME = ‘E‘ # 类的直接下级作用域 叫做类变量 3 4 def __init__(self, name): 5 self.name = name # 关联到实例的变量 叫做实例变量
__dict__ :当通过对象动态增加属性的时候,如果存在此属性,会覆盖原属性,不存在会存放到对象.__dict__中。
__class__ : 如果通过类名.类属性方式给类属性重新赋值,原类属性会被覆盖
--------------------------------------------------- 只需要对象.__dict__ 来看其内容能分辨-----------------------------------------------------------------------------
类装饰器通常用于给类增加属性-- 方法都是类级的
方法的定义都是类级的,但是有的方法使用实例调用,有的方法使用类来调用
class I: def print(self): print(‘instance method‘) @classmethod # 当一个方法,被classmethod装饰的时候, 第一个参数会变成类本身, 这样的方法叫类方法 def class_print(cls): print(id(cls)) print(‘class method‘) @staticmethod # 当一个方法, 被staticmethod装饰的时候,不会自动传递第一个参数, 这样的方法叫静态方法 def static_print(): print(‘static method‘) def xxx_print(): print(‘this is a function‘)
实例方法只能由实例调用
class Door: def __init__(self, number, status): self.number = number self.__status = status # 双下划线开始, 非双下划綫结尾的都是私有的, 在类外部无法访问 def open(self): # 方法 self.__status = ‘opening‘ def close(self): self.__status = ‘closed‘ def status(self): return self.__status def __set_number(self, number): # 双下滑先开始, 非双下划线结尾的方法也是私有方法 self.number = number
所有双下划线开始,非双下划线结尾的成员,都是私有成员
私有成员在类外部无法访问
Python的私有成员是通过改名实现的,_类名 + 带双下划綫的属性 在__dict__ 中会有标识(python中没有真正的私有成员,但这可以忽略不计)
部分代码中 用单下划线标注的变量可以理解为内部变量,不希望在外部继续调用(其实外部可以调用),解释器不不做任何处理
双下划线开始,非双下划线结尾的方法是私有方法。
如果用 @property 装饰器会把一个仅有self参数的函数,变成一个属性, 属性的值,为方法的返回值
class Door: def __init__(self, status): self.__status = status # 双下划线开始, 非双下划綫结尾的都是私有的, 在类外部无法访问 @property # property 装饰器会把一个仅有self参数的函数,变成一个属性, 属性的值,为方法的返回值 def status(self): return self.__status
d = Door(‘opening‘) print(d.status) status 为 Door 中 status方法
super(父类, self).print() # 代理 TYPE 的父类的方法, 并且使用 obj 绑定 第一个参数 指定调用谁的直接父类, 第二个参数指定当调用时,传递什么作为方法的第一个参数
class Base: def __init__(self, a, b): self.__a = a self.__b = b def sum(self): return self.__a + self.__b
class Sub(Base): def __init__(self, a, b, c): self.c = c # self.__a = a # self.__b = b super().__init__(a, b)
super 对象只能获取类的属性
标签:生活 span function 类变量 初始化 close 共享 类的属性 oop
原文地址:http://www.cnblogs.com/lcmemo/p/6424389.html