class Demo:
@property
def p(self):
print('property func')
@p.setter
def p(self,num):
print('property_setter')
@p.deleter
def p(self):
print('在删除')
d=Demo()
d.p
d.p=10
del d.p
--------------------------------------------------------------------------------------
property func
property_setter
在删除
staticmethod静态方法装饰器:将类内的方法变成普通的函数,或者把类外的函数放到类内当作方法调用
class A:
@staticmethod
def sum(): #这个方法跟普通函数没有区别
print('staticmethod')
A.sum() #用类名调用
--------------------------------------------------------------------------------------
staticmethod
classmethod类方法装饰器:该方法用于操作类属性,无法操作对象属性
class A:
role='male'
@classmethod
def sum(cls): #用于操作类属性
print(cls.role)
A.sum() #用类名调用
--------------------------------------------------------------------------------------
male
十、isinstance和type的区别以及issubclass
isinstance和type都可以用于判断对象和指定类间的关系,但是isinstance的判断没有type准确,它无法正确判断子类的对象和其父类的关系
class A:
pass
class B(A):
pass
b=B()
print(isinstance(b,B))
print(isinstance(b,A))
print(type(b) is B)
print(type(b) is A)
--------------------------------------------------------------------------------------
True
True
True
False
issubclass用于判断给定的两个类,前者是否是后者的子类
十一、反射
hasattr(对象或类名,‘属性或方法名’) 判断指定的对象或类中是否存在指定的属性或方法,有返回True
getattr(对象或类名,'属性或方法名') 获取对象或类的指定属性值或方法的内存地址
setattr(对象或类名,‘新属性名’,新属性值) 给对象或类添加新的属性或方法
delattr(对象或类名,‘新属性名’) 删除之前添加的属性
十二、类的内置方法
__doc__ :输出类的描述信息
__module__ :表示当前操作的对象在那个模块
__class__ : 表示当前操作的对象的类是什么
__dict__ :查看类或对象中的所有成员 类调用打印类的所有属性,不包括实例属性。实例调用打印所有实例属性
__str__ 格式化输出%s输出该方法的值
__repr__ 格式化输出%r输出该方法的值,并且%s在没有__str__方法时也是输出该方法的值
__del__ del 执行该方法
__getitem__ 用对象加[]方式取值
class A:
def __init__(self):
self.names=['egon','alex','eva'] #可以是其他序列
def __getitem__(self, item):
print(self.names[item])
a=A()
a[1]
----------------------------------------------------------
alex
__setitem__ 添加值
__delitem__ 删除值
__new__ 用于创建没有属性的对象,调用object的__new__即可不需要自己实现。可以利用该方法实现单例模式
__call__ 对象加括号执行该方法
__len__ len()执行该方法
__eq__ ==运算输出该方法的值
__hash__ hash执行该方法
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx