attr 反射系列
- getattr(self, "值")
- hasattr(self, "值")
其他不常用
可以用字符串形式来获取一个方法,获取到的值直接加()就可以调用
class A:
def __init__(self, name, age):
self.name = name
self.age = age
def __setitem__(self, key, value):
self.__dict__[key] = value
def func_a(self):
print("test")
a = A("sun", 30)
if hasattr(a, "name"):
name = getattr(a, "name")
print(name)
if hasattr(a, "func_a"):
func = getattr(a, "func_a")
func()
双下系列
-
__init__(self) #初始化函数
class A: def __init__(self, name): self.name = name a = A("sun") print(a.name)
-
__str__(self) #默认print函数,展示一个对象的内容
def __str__(self): return "Is Class A" print(a)
-
__repr__(self) # 默认返回原始类型,可以重写
def __repr__(self): return #你想要的结果 这个方法可以用在: 1、格式化输出%r 2、repr()
-
__call__(self) # 可以再调用对象是默认执行一次你定义的东西
def __call__(self): # 写你要执行的东西 1、实例化一个对象 2、对象+()调用
-
__len__(self)
def __len__(self): # 写你要的东西 一般返回一个和对象有关的特定的内容长度 1、外部调用 len()时调用
-
__doc__(self) #打印说明文档
class A(object): """测试""" pass print(A.__doc__)
-
__del__(self) # 一般不用
-
__dict__ #列出类所包含的属性、方法,对象的属性
-
__new__ # 构造方法,在实例化时最先执行的内置函数,一般不用
item 系列
-
__getitem__(self, item) # 获取创建对象时传入的属性值
class A: def __init__(self, name, age): self.name = name self.age = age def __getitem__(self, item): if hasattr(self, item): return self.__dict__[item] f = A("sun", 30) print(f["name"])
执行结果:
sun
-
__setitem__(self, key, item) # 修改属性值
class A: def __init__(self, name, age): self.name = name self.age = age def __setitem__(self, key, value): self.__dict__[key] = value f = A("sun", 30) print(f.name) f.__setitem__("name", "sunzheng") print(f.name)
执行结果:
sun
sunzheng
网友评论