发布于2020-02-26 11:57 阅读(1423) 评论(0) 点赞(0) 收藏(0)
__slots__
__slots__
属性时,可以进行动态添加属性class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age
p = Person('lucy', 18)
p.city = '上海'
print(p.city) # 上海
__slots__
时,可以对属性进行控制。只可以设置__slots__
中的属性,如果设置的属性不在范围内,会报错。class Person(object):
__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__
class Person(object):
"""
这是类的文档信息
"""
__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 test
p = test.Person('lucy', 18)
print(p.__module__) # test
__class__
__main__.类名
)class Person(object):
__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__
class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age
p = Person('lucy', 18)
print(p.__dict__) # {'name': 'lucy', 'age': 18}
__dir__()
dir(对象名)
等价。查看一个对象支持的所有属性和方法class Person(object):
__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__
方法class Person(object):
def __init__(self, name, age, city):
self.name = name
self.age = age
self.city = city
p = Person('张三', 18, '襄阳')
# 我想把age修改成20,会报错
p['age'] = 20 # [] 语法会调用对象的 __setitem__方法
__setitem__
方法,可以进行修改和添加属性class Person(object):
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
作者:黎明要到来了
链接:https://www.pythonheidong.com/blog/article/234098/e5c8e3c0328d710dc2a6/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!