day15

2018-10-22  本文已影响0人  13147abc

类方法和静态方法

1.对象方法:

2.类方法:

3.静态方法:

4.怎么选择使用哪种方法(重点!):

class Person:
    num = 61
    @classmethod
    def destroy(cls):
        print('cls',cls,cls.num)
        p2 = cls()
        print('人类破坏环境')

    @staticmethod
    def func1():
        print('人类的静态方法')

私有化

class Person:
    #私有字段
    __num = 61
    def __init__(self, name, age):
        self.name = name
        #私有对象属性
        self.__age = age

p1 = Person('小明', 23)
print(p1.name)
print(p1.__dict__)

getter和setter

1.什么时候需要添加对象属性的getter和setter

2.怎么添加setter和getter

getter:

c.使用属性的值的时候,不通过带下划线的属性名去使用,而是通过没有下划线的属性去使用

注意:对象.不带下划线的属性 --> 调用getter对应的函数

setter:

class Number:
    def __init__(self):
        self._value = 0
        # 0-6保存
        self._week = 3
        self.type = int
        self.id = None

    # _value添加getter和setter
    @property
    def value(self):
        return self._value

    @value.setter
    def value(self, x):
        if not -100 <= x <= 100:
            raise ValueError
        self._value = x




    # _week的getter
    @property
    def week(self):
        if self._week == 0:
            return '星期天'
        elif self._week == 1:
            return '星期一'
        elif self._week == 2:
            return '星期二'
        elif self._week == 3:
            return '星期三'
        elif self._week == 4:
            return '星期四'
        elif self._week == 5:
            return '星期五'
        elif self._week == 6:
            return '星期六'
    @week.setter
    def week(self, value):
        # 如果传的值不是整型数据
        if not isinstance(value, int):
            raise ValueError
        if not 0 <= value <= 6:
            raise ValueError

        self._week = value



number = Number()
number.value = 99
print(number.week)  # number.week 实质是在通过number去调用getter对应的week方法
number.week = 1  # number.week = 值  实质是通过number去调用setter对应的week方法


number.value = 100
print(number.value)

上一篇 下一篇

猜你喜欢

热点阅读