python基础课程OOP(4)

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('哈哈,我被调用了')
        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值