一、__slots__ 类中没有__slots__属性时,可以进行动态添加属性 class Person ( object ): def __init__ ( self , name , age ): self . name = name self . age = age p = Person ( 'lucy' , 18 ) p . city = '上
一、__slots__
def __init__(self, name, age):
self.name = name
self.age = age
p = Person('lucy', 18)
p.city = '上海'
print(p.city) # 上海
__slots__ = ('name', 'age', 'sex')
def __init__(self, name, age):
self.name = name
self.age = age
p = Person('lucy', 18)
p.sex = '男'
p.city = '上海' # 报错
print(p.sex) # 男
二、__doc__
"""
这是类的文档信息
"""
__slots__ = ('name', 'age', 'sex')
def __init__(self, name, age):
self.name = name
self.age = age
p = Person('lucy', 18)
print(p.__doc__) # 对象名.__doc__
print(Person.__doc__) # 类名.__doc__
三、__module__
test.py中的代码如下:
class Person(object):__slots__ = ('name', 'age', 'sex')
def __init__(self, name, age):
self.name = name
self.age = age
demo.py中的代码:
import testp = test.Person('lucy', 18)
print(p.__module__) # test
四、__class__
__slots__ = ('name', 'age', 'sex')
def __init__(self, name, age):
self.name = name
self.age = age
p = Person('lucy', 18)
print(p.__class__) # <class '__main__.Person'>
五、__dict__
def __init__(self, name, age):
self.name = name
self.age = age
p = Person('lucy', 18)
print(p.__dict__) # {'name': 'lucy', 'age': 18}
六、__dir__()
__slots__ = ('name', 'age')
def __init__(self, name, age):
self.name = name
self.age = age
p = Person('lucy', 18)
print(p.__dir__())
print(dir(p))
七、__setitem__方法
def __init__(self, name, age, city):
self.name = name
self.age = age
self.city = city
p = Person('张三', 18, '襄阳')
# 我想把age修改成20,会报错
p['age'] = 20 # [] 语法会调用对象的 __setitem__方法
def __init__(self, name, age, city):
self.name = name
self.age = age
self.city = city
def __setitem__(self, key, value):
self.__dict__[key] = value
p = Person('张三', 18, '襄阳')
p['age'] = 20
p['sex'] = '男'
print(p.__dict__) # {'name': '张三', 'age': 20, 'city': '襄阳', 'sex': '男'}
八、__getitem__方法
class Person(object):def __init__(self, name, age, city):
self.name = name
self.age = age
self.city = city
def __getitem__(self, item):
return self.__dict__[item]
p = Person('张三', 18, '襄阳')
print(p['name']) # 张三
九、__delitem__方法
class Person(object):def __init__(self, name, age, city):
self.name = name
self.age = age
self.city = city
def __delitem__(self, key):
print(f'删除的属性{key}')
p = Person('张三', 18, '襄阳')
del p['city'] # 删除的属性city