512

私はそれを次のようにやっています:

def set_property(property,value):  
def get_property(property):  

また

object.property = value  
value = object.property

私は Python を初めて使用するので、まだ構文を調べています。これについてアドバイスをお願いします。

4

9 に答える 9

899

これを試してください: Python プロパティ

サンプルコードは次のとおりです。

class C(object):
    def __init__(self):
        self._x = None

    @property
    def x(self):
        """I'm the 'x' property."""
        print("getter of x called")
        return self._x

    @x.setter
    def x(self, value):
        print("setter of x called")
        self._x = value

    @x.deleter
    def x(self):
        print("deleter of x called")
        del self._x


c = C()
c.x = 'foo'  # setter called
foo = c.x    # getter called
del c.x      # deleter called
于 2010-04-13T04:45:55.523 に答える
29
In [1]: class test(object):
    def __init__(self):
        self.pants = 'pants'
    @property
    def p(self):
        return self.pants
    @p.setter
    def p(self, value):
        self.pants = value * 2
   ....: 
In [2]: t = test()
In [3]: t.p
Out[3]: 'pants'
In [4]: t.p = 10
In [5]: t.p
Out[5]: 20
于 2010-04-13T04:45:45.157 に答える
16

@propertyデコレータをチェックしてください。

于 2010-04-13T04:42:36.447 に答える
9

プロパティは割り当てで使用できるため非常に便利ですが、検証も含めることができます。デコレーター @property と @<property_name>.setter を使用してメソッドを作成するこのコードを確認できます。

# Python program displaying the use of @property 
class AgeSet:
    def __init__(self):
        self._age = 0

    # using property decorator a getter function
    @property
    def age(self):
        print("getter method called")
        return self._age

    # a setter function
    @age.setter
    def age(self, a):
        if(a < 18):
            raise ValueError("Sorry your age is below eligibility criteria")
        print("setter method called")
        self._age = a

pkj = AgeSet()

pkj.age = int(input("set the age using setter: "))

print(pkj.age)

私がこれについて書いたこの投稿にも詳細があります: https://pythonhowtoprogram.com/how-to-create-getter-setter-class-properties-in-python-3/

于 2021-02-20T01:22:24.833 に答える