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’

浙公网安备 33010602011771号