Python奇怪的属性

时间:2018-09-30 04:56:51

标签: python class oop attributes

我一直在在线学习Python 3课程,并且进行了一次练习。 您应该编写一个名为Foo的类,该类具有一个名为x的属性,该属性是根据以下规则设置的:

  • 创建Foo类时,x的初始值为0。 将x设置为数字时: 如果该数字为非负数,则其右边的两位数字存储在x中。

      
        

    p = Foo()

             

    print(p.x)----->输出:0

             

    p.x = 123

             

    print(p.x)----->输出:23

      

我只是想知道x是如何通过对象获得赋值的。

>>> p=Foo()
>>> p.x = 1234
>>> p.x == 34
True
>>> type(p.x)
<class 'int'>

1 个答案:

答案 0 :(得分:0)

class Foo():
def __init__(self):
    self.n=0
@property
def x(self):
    return self.n
@x.setter
def x(self, num):

    if num<100 and num>=0:
        self.n=num
    elif num>100 and num%100!=0 :
        self.n=num%100
    elif num<0:
        self.n=-1
    else:
        self.n=0