还有另一种方法可以将值从对象方法转换为对象变量

时间:2018-06-27 21:34:02

标签: python oop variables methods

我编写了类似这样的代码

class Dog():
    def breed():
        return "rottwiller"

    def __init__(self, name, age, breed=breed()):
        self.name = name
        self.age = age
        self.breed = breed

是否还有另一种方法来实现“ self.breed”值,而不是通过breed = breed()实现,而是通过函数方法。

例如类似于以下内容(我已经尝试过了,这行不通):

def __init__(self, name, age):
    self.name = name
    self.age = age
    self.breed = breed()

2 个答案:

答案 0 :(得分:-1)

您不应将属性和方法的名称相同。话虽这么说,我对您为什么要问这个问题的怀疑告诉我,我应该将您指向class Dog(): def __init__(self, name, age, breed): self.name = name self.age = age self._breed = breed @property def breed(self): return self._breed 装饰器。

Dog

这对您的示例来说是过大了,但是如果您有一个@property类和特定的品种,我想您正在考虑子类以及可能比此处要复杂的事情。本质上,breed装饰器将允许您访问{{1}}作为属性,并将调用的值返回给您在其下定义的同名函数。

答案 1 :(得分:-2)

发布的代码存在很多问题。

  1. 设置breed属性时,__init__方法将被breed方法覆盖。因此,应重命名该方法。
  2. breed方法需要指定第一个参数self

    级犬:     def get_breed():         返回“ rottwiller”

    def __init__(self, name, age):
        self.name = name
        self.age = age
        self.breed = self.get_breed()