在方法

时间:2016-03-07 16:23:21

标签: python

只是一个简单的问题,所以我有一个名为animal的课程,当你创建课程时,你可以用dogName初始化它。

class animal:

    def __init__(self, dogName):
        self._owner = ""
        self._address = ""

    def setOwnerDetails(self, name, address):
        self._owner = name
        self._address = address

    def getDetails(self):
        return self._owner, self._address

    def getName(self):
        return self.dogName
        ##Does not work, trying to access constructor argument.

因此,当您使用值为dogName初始化实例时,在此实例中Dogname为Lucy,如何在方法中访问此值? 我知道我可以通过创建一个实例变量来做到这一点,但还有其他方法可以做到这一点。上面可以理解的变量不起作用,但还有其他方法吗?

dog1 = animal("Lucy")
dog1.setOwnerDetails("Thomas", "35 Trop")
result = dog1.getDetails()
print(dog1.getName())  # trying to print the dog Name that is in the constructor argument.

任何帮助将不胜感激,我可能没有解释清楚。

1 个答案:

答案 0 :(得分:1)

您需要在构造函数中将dog_name设置为实例属性:

def __init__(self, dog_name):
    self._owner = ""
    self._address = ""
    self.dog_name = dog_name

然后,您将能够使用self.dog_name访问方法中的属性。

除了:正如@jonrsharpe在评论中提到的那样,为了符合PEP-8,您应该将变量名称从dogName更改为dog_name