Python面对对象编程

面向对象

1.初级

class student:
    
    def __init__(self,name,age):
        self.name=name
        self.age=age

class student:
    def set_name(self,name):
        self.name=name
    def get_name(self):
        return self.name
    def set_age(self,age):
        self.age=age
    def get_name(self):
        return self.name
stu=student()
stu.set_name='lx'
stu.set_age=16

2高级面向对象

1.__slots__

其中'_'是将变量私有,而‘__’是避免子类将其覆盖

将外部的属性,方法和实例绑定,MethodType

from types import MethodType
class student:
    pass
def set_name(self,name):
        self.name=name
stu=student()
stu.set_name=MethodType(set_name,stu)
stu.set_name('lx')

__slots__将绑定的属性或者方法限制

限制实例的属性

class student:
    __slots__=('name')
def set_name(self,name):
        self.name=name
def set_age(self,age):
        self.age=age
stu=student()
stu.set_name=MethodType(set_name,stu)
stu.set_name('lx')
stu.set_age=MethodType(set_age,stu)
stu.set_name(16)
print(stu.name,stu.age)

报错

2@property将一个方法变成一个属性

class student:
    @property
    def score(self):
        return self._score
    @score.setter
    def score(self,value):
        if not isinstance(value,int):
            raise ValueError('score must be a integer')
        elif value<0 or value>100:
            raise ValueError('score must be between 0 to 100')
        self._score=value

@score.setter是对属性的具体化,要求细化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值