class XiaoA:
@classmethod
def love(self):
self.name=
类方法介绍
@classmethod修饰的方法是类方法
类方法可以用类名调用,也可以用对象调用
类方法无法覆盖类属性,可以在这里初始化
必须加上self
只能访问类变量,不能访问实例变量
静态方法
静态方法实际上和类没有关系了,仅仅只要类名调用
@staticmethod修饰的方法是静态方法
静态方法可以用类名调用,也可以用对象调用
参数可以不带self
作用一般多态会用到,或者一个工具类集合
静态方法与类方法的对比
不用加self,其他差不多
属性方法property(类似Java中get/set方法)
把一个方法变成一个属性,然后像属性一样用,不用加括号调用
屏蔽信息获取解析过程,只暴露结果
静态方法
class Dog(object):
def __init__(self,name):
self.name = name
@staticmethod #实际上跟类没什么关系了
def eat(self):
print("%s is eating %s" %(self.name,'dd'))
def talk(self):
print("%s is talking"% self.name)
d = Dog("ChenRonghua")
d.eat(d)
d.talk()
类方法
class Dog(object):
#n = 333
#name = "huazai"
def __init__(self,name):
self.name = name
#self.n = 333
#@staticmethod #实际上跟类没什么关系了
@classmethod
def eat(self):
print("%s is eating %s" %(self.name,'dd'))
def talk(self):
print("%s is talking"% self.name)
d = Dog("ChenRonghua")
d.eat()
属性方法
class Flight(object):
def __init__(self,name):
self.flight_name = name
def checking_status(self):
print("checking flight %s status " % self.flight_name)
return 0
@property
def flight_status(self):
status = self.checking_status()
if status == 0 :
print("flight got canceled...")
elif status == 1 :
print("flight is arrived...")
elif status == 2:
print("flight has departured already...")
else:
print("cannot confirm the flight status...,please check later")
@flight_status.setter
def flight_status(self,status):
print("flight %s has changed status to %s" %(self.flight_name,status))
@flight_status.deleter
def flight_status(self):
del self.flight_name
f = Flight("CA980")
f.flight_status
f.flight_status = 2