day14总结

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

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)

你可能感兴趣的:(day14总结)