类方法 @classmethod
类方法主要的作用时,用于操作类变量,比实例方法会更加简单。
第一个参数必须是当前类对象,该参数名一般约定为“cls”,通过它来传递类的属性和方法
实例方法中需要采用 self.class.xxx 来调用类变量
类方法中,只需要调用 self.xxx 即可调用类变量
@classmethod
def plus_sum(cls):
cls.sum += 1
print(cls.sum)
静态方法 @staticmethod
参数随意,没有“self”和“cls”参数,但是方法体中不能使用类或实例的任何属性和方法
访问类变量的时候,需要写 类的全程 class.xxx
成员的可见性 def __xxx(self) / __xx:
成员只能由类内部来进行修改
所以对类下面的变量修改,建议进行封装,提供方法函数来对类下面的变量进行修改。
在函数前面加双下划线 __xxx():该函数对其实例化和外部时无法被调用的
在变量前面加双下划线 __xxx :该变量时无法被外部成员或者实例化所调用的,该变量已经被类修改为了 __Class__xx 了。
继承类 Class xxx(xx_class)
- 子类会继承父类的变量、方法
- 子类构造函数中,需要添加父类构造函数中的所有变量
- 子类调用父类方法使用 super(class, self).init( ) / super(class, self).xxx
- 如果子类方法和父类方法出现重名,会优先调用子类方法
父类:
class People():
def __init__(self, name ,age):
pass
子类:
form xxx import People
Class Student(People):
def __init__(self, school, name ,age):
self.school = school
#People.__init__(self, name, age) // 子类调用父类构造函数中,必须传入self
super(Student, self).__init__(name, age)
实例化:
stu1 = Student("青轩阁", "轩辕" ,16);