python 进阶day2

@property装饰器

# 使用装饰器的时候,需要注意:
  # 1. 装饰器名,函数名需要一致.
  # 2. property需要先声明,再写setter,顺序不能倒过来
  # 3. 如果你希望一点变量只是被访问不能被修改,那么可以使用访问器@property
  # 4. 如果要修改访问器中的变量,可以搭建一个修改器,或者删除访问器.

class Person(object):
    def __init__(self, name, age):
        self._name = name
        self._age = age
    # 访问器 - getter方法
    @property
    def name(self):
        return self._name
    # 访问器 - getter方法
    @property
    def age(self):
        return self._age
    # 修改器 - setter方法
    @age.setter
    def age(self, age):
        self._age = age
    def play(self):
        if self._age <= 16:
            print('%s正在玩飞行棋.' % self._name)
        else:
            print('%s正在玩斗地主.' % self._name)
 
 
2.在python中类是动态的,
class Num(object):
    def __init__(self):
        self.a = 1000
   
    def A(self):
        print(self.b)

num = Num()
num.b =1000000
# print(num.a)
print(num.b)
num.A()
 
 
__solots__魔法
如果我们需要限定自定义类型的对象只能绑定某些属性,可以通过在类中定义__slots__变量来进行限定
class Person(object):
    # 限定Person对象只能绑定_name, _age和_gender属性
    __slots__ = ('_name', '_age', '_gender')
    def __init__(self, name, age):
        self._name = name
        self._age = age
    @property
    def name(self):
        return self._name
    @property
    def age(self):
        return self._age
    @age.setter
    def age(self, age):
        self._age = age
    def play(self):
        if self._age <= 16:
            print('%s正在玩飞行棋.' % self._name)
        else:
            print('%s正在玩斗地主.' % self._name)
 
 
 
 
 

猜你喜欢

转载自www.cnblogs.com/lgf333/p/11318916.html
今日推荐