在类中定义方法
def __str__(self):
return "你好"
#当执行print(实例名)时,会自动调用__str__方法 结果是输出 你好
@property (可读,直接读取return返回的值)与@函数名.setter(可写,当调用实例名.age=xxx时,调用的是@函数名.setter标识的函数)
class cat(object):
def __init__(self):
self.__age = 14
@property
def age(self):
return "nihao"
#前面必须有@property声明的函数,否则会报错
@age.setter
def age(self,age):
self.__age=age
if __name__ == "__main__":
c = cat()
c.age=4
print(c.age)
slots=(tuple)方法
ps:如果当前类包含有slots方法,那么该类不能添加新的属性,只能使用在slots元组中的属性,slots元组中的属性值可以变化,当该类被继承时,该类的slots方法不会影响他的子类,也就是说,子类仍然可以添加新的属性,除非子类中也有slots方法,子类也会继承父类中的slots方法中的属性
类的实例方法,比如直接def 方法名 只能用实例调用
被@staticmethod修饰
类的静态方法,可以通过类名或者实例名来调用
被@classmethod修饰
类的类方法,可以通过类名或者实例名来调用
class Cat(object):
log="sss"
@classmethod
def info(cls):
return "你好,我是类方法"+cls.log
if __name__ == "__main__":
c=Cat()
print(c.info())
print(Cat.info())
ps:万物皆对象
hasattr(object, name)
判断object对象中是否存在name属性,有则返回True,否则返回False;需要注意的是name参数是string类型,所以不管是要判断变量还是方法,其名称都以字符串形式传参