python OOP(4)
1-类的成员描述符(属性)
.属性案例
class Student():
def __init__(self):
self.name=name
self.age=age
self.setName(name)
def intro(self):
print('hai,my name is{0} '.format(self.name))
def setName(self,name):
self.name=name.upper()
s1=Student('liu',19)
s2=Student('MIC',24)
s1.intro()----大写
s2.intro()----大写
.类的成员描述符是为了在类中对类的成员属性进行相关操作而创建的一种方式
.get:获取属性的操作
.set:修改或者添加属性操作
.delete:删除属性的操作
.如果想使用类的成员描述符,大概有三种方法
.使用类实现描述器
.使用属性修饰符
.使用property函数
.property函数很简单
.property(fget,fset,fdel,doc)
.案例
定义一个Person类具有name,age属性
对于任意输入的姓名,我们希望都用大写方式保存
年龄我们希望内部统一用整数保存
x=property(fget,fset,fdel,doc)
class Person():
#函数的名称可以任意
def fget(self):
return self._name*2
def fset(self):
#所有输入的姓名以大写形式保存
self._name=name.upper()
def fdel(self):
self._name='noname'
name=property(fget,fset,fdel,'对name进行操作')
p1=Person
p1.name='liu'
print(p1.name)----------LIULIU
#运行时先调用了fset函数之后有调用了fget函数
.无论那种修饰符都是为了对成员属性进行相应的控制
.类的方式:适合多个类中的多个属性共用一个描述符
.property:使用当前类中使用,可以控制一个类中多个属性
.属性修饰符:适用于当前类中使用,控制一个类中的一个属性
2-类的内置属性
__dict__:以字典的形式显示类的成员组成
__doc__:获取类的文档信息
__name__:获取类的名称,如果在模块中使用,获取模块的名称
__bases__:获取某个类的所有父类,以元组的方式显示
3-类的常用的魔术方法
.魔术方法就是不需要人为调用的方法,基本是在特定的时刻自动触发
.魔术方法的统一特征,方法名被前后各两个下划线包裹
.操作类
.__init__:构造函数
#init举例
class A():
def __init__(self,name=0):
print('哈哈,我被调用了')
a=A()
>>哈哈,我被调用了
.__new__:对象实例化方法,一般不需要使用,此魔术方法需要重写
.__call__:对象当函数使用的时候触发
#__call__实例
class A():
def __init__(self,name=0):
print('哈哈,我被调用了')
python基础课程OOP(4)
最新推荐文章于 2023-12-26 18:51:31 发布