1.内置类属性
创建类的时候,系统默认为我们添加的类的属性
class Person:
"""说明文档:人类"""
# 类的字段
number = 61
# 对象属性
def __init__(self, name, age=0, gender='女'):
self.name = name
self.age = age
self.gender = gender
# ============方法==========
def object_func(self):
print('对象方法: '+self.name)
@classmethod
def class_func(cls):
print('类方法: ', cls.number)
@staticmethod
def static_func():
print('静态方法')
# 系统自带的魔法,可以定制当前类的对象的打印内容。实现这个函数的时候要求有一个字符串类型的返回值
# 影响单独打印对象的效果
# def __str__(self):
# return str(self.__dict__)[1:-1]
# 对象作为元素的时候的打印效果
def __repr__(self):
return '<'+str(self.__dict__)[1: -1]+'>'
# def __repr__(self):
# return '<%s.%s object at %s>' % (self.__class__.__module__, self.__class__.__name__, hex(id(self)))
p1 = Person('小明', 18, '男')
1.name 字段
"""
类.name - 获取类的名字
"""
print(Person.name, type(Person.name)) # Person <class 'str'>
2.doc 字段
"""
类.doc - 获取类的说明文档
"""
print(Person.doc)
3.class 对象属性
"""
对象.class - 获取对象对应的类(你这个对象是哪个类的对象)
"""
print(p1.class)
4.dict 字段/对象属性
"""
类.dict - 获取类中所有的字段和对应的值,以字典的形式返回(了解)
对象.dict - 获取对象中所有的属性和对应的值,以字典的形式返回(掌握)
"""
print(Person.dict)
print(p1.dict)
5.module 字段
"""
类.module - 获取指定的类声明在哪个模块中,返回模块名(获取类所在的模块的name属性的值)
"""
print(Person.module)
6.bases 字段
"""
类.bases - 返回当前类的所有父类
"""
print(Person.bases)
class A(Person, int):
pass
print(A.bases)
print('p1:', p1)
persons = [p1, Person('小花', 20)]
print(persons)
2.slots魔法
"""
可以通过给slots字段赋值来约束当前类有哪些对象属性;
当在类中给slots赋值后,当前类的对象的dict属性无效
"""
class Dog:
slots = ('name', 'age', 'gender', 'name1')
def __init__(self, name, age=0):
self.name = name
self.age = age
self.gender = '公'
dog = Dog('大黄')
print(dog.dict)