python面向对象编程2(内置属性、类属性、对象属性)

python面向对象编程

一、内置属性

       使用内置函数dir可以查看一个对象支持的所有属性和方法,Python中存在着很多的内置属性。
class Person:
    def __init__(self,name):
        self.name=name


print(dir(Person))
# ['__class__', '__delattr__', '__dict__', ...]

  

       1、__doc__

        文档说明,在类中定义的。也可以直接: 类名.__doc__
class Person:
    '''
    classname is Person
    '''

    def __init__(self, name):
        self.name = name


p = Person('Jack')

print(Person.__doc__)     # classname is Person
print(p.__doc__)          # classname is Person

  

       2、__dict__

       把对象属性转换成字典
class Person:
    def __init__(self,name,age):
        self.name=name
        self.age=age

p1=Person('Jack',20)
print(p1.__dict__)        #   {'name': 'Jack', 'age': 20}

  

       3、python内置类属性

             __name__:内置属性,如果直接运行该模块,__name__="__main__";如果import一个模块,该模块的__name__=模块名

             if __name__=='__main__' :判断是否直接运行的该模块
 
             __module__:类定义所在的模块(类的全名是‘__main__.className’,如果类位于一个导入mymod中,那么className.__module__等于mymode)
 
             __bases__:类的所有父类构成元素(包含一个所有父类组成的元组)

二、类属性和对象属性

       在面向对象开发中,使用类创建出来的实例是一个对象,类同样是一个对象。

       1、实例属性(对象属性)

       通过类创建的对象称为实例对象,对象属性又称为实例属性,记录对象各自的数据,不同对象的同名实例属性,记录的数据各自独立,互不干扰。在__init__方法里,以参数的形式定义。
class Person:
    def __init__(self,name,age):
        #这里的name和age都属于实例属性,每个实例在创建时,都有自己的属性。
        self.name=name
        self.age=age
        
#每创建一个对象,这个对象就有自己的name和age属性(对象属性)。
p1=Person('Jack',18)
p2=Person('Rose',19)
print(p1.name)   #获取对象属性值:‘Jack’
#Person称为类对象,p1和p2称为实例对象

  

        2、类属性

       在类对象里定义类属性。类属性可以通过类对象和实例对象获取。

       类属性只能通过类对象修改,不能通过实例对象修改。
class Person:
    
    type='human'   #这个属性定义在类里,函数之外,我们称之为类属性
    
    def __init__(self,name,age):
        #这里的name和age都属于实例属性,每个实例在创建时,都有自己的属性。
        self.name=name
        self.age=age
 
p1=Person('Jack',18)
print(Person.type) #通过类对象获取类属性:human
print(p1.type)   #通过实例对象获取类属性:human
Person.type='hello'   #类属性通过类对象修改
p1.type='world'   #在实例对象里添加了对象属性type,并赋值 ‘world’

  

原文地址:https://www.cnblogs.com/shixiaoxun/p/14444029.html