关于静态方法,类方法,实例方法,类属性,实例属性

时间:2020-12-10 19:29:55


class Person(object):
    """用来完整的描述一个人的基本属性和方法"""
    # 类属性
    country = '中国'


    def __init__(self):
        self.province = '河南'
        self.__age = 18


    def run(self):
        """跑步的功能"""
        print(self.province)
        print("我要开始天天跑步")


    # 定义类方法
    @classmethod
    def test_class(cls):
        print("in test class")


    # 定义静态方法
    @staticmethod
    def test_static():
        print("in static method")


    def __call__(self, *args, **kwargs):
        print("我被调用了")


    def __str__(self):
        return self.province




p = Person()
print(p)


# __doc__表示类的描述信息
print(Person.__doc__)


# __dict__:类或对象中的所有属性
print(p.__dict__)  # 记录实例对象的属性
print(Person.__dict__)  # 记录当前类中的定义的方法和类属性


# __class__表示当前操作的对象的类是什么
print(p.__class__)
print(p.__class__.__doc__)


# __module__表示当前操作的对象在哪个模块
print(Person.__module__)
print(p.__module__)
# 在这里输出的是一个type类,这是一个元类,元类是用来创建类对象的(了解即可)
print(Person.__class__)


# 调用执行某一个实例对象 如果没有__call__方法,会'Person' object is not callab错误, 需要实现__call__方法
p()