类方法,不和实例捆绑,只供类使用
cls代表类,可以访问类的数据和函数属性,不能访问实例的数据属性。
class xx:
tag=1
@classmethod
def aa(cls):
print(cls.tag)
xx.aa()
类的静态属性
将函数定义成数据属性,可以访问对象的数据属性,也可以访问类的函数和数据属性
class xx:
@property
def a(x):
return x*3
a = xx()
x.a #不加括号
类静态方法:名义上归属类管理,不能使用类变量和实例变量,是类的工具包
实例只有数据属性,函数属性都从类中调用。
class xx:
@staticmethod
def abc(a,b,c):
print(a,b,c)
xx.abc(a,b,c) 不实例化,通过类方法进行使用
子类调用父类的方法,使用super方法
class Vehicle:
Country = 'China'
def __init__(self,name,speed,load,power):
self.name = name
self.speed = speed
self.load = load
self.power = power
def run(self):
print("go go")
class Subway(Vehicle):
def __init__(self,name,speed,load,power,line):
super().__init__(name,speed,load,power) # 同super(Subway,self).__init__(name,speed,load,power)
self.line = line
def show_info(self):
print(self.name,self.speed,self.line)
line1 = Subway('一号线',200,'on','electricity','1haoxian')
line1.show_info()