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’