我编写了类似这样的代码
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()
答案 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)
发布的代码存在很多问题。
breed
属性时,__init__
方法将被breed
方法覆盖。因此,应重命名该方法。 breed
方法需要指定第一个参数self
。
级犬: def get_breed(): 返回“ rottwiller”
def __init__(self, name, age):
self.name = name
self.age = age
self.breed = self.get_breed()