【问题标题】:How do I give same methods to all of the variable in the class in clean pythonic way?如何以干净的 Python 方式为类中的所有变量提供相同的方法?
【发布时间】:2019-06-20 22:25:07
【问题描述】:

我想赋予类中所有变量执行相同方法的能力,也就是说我有 Dog 类,方法是 double 和 append

class Dog:

    def __init__ (self, height, weight, age):
        self.height = height
        self.weight = weight
        self.age = age

    def double:
        self.height = height * height

    def append:
        weight = list(weight).append(weight)

假设我想让所有其他可变身高、体重和年龄都能够加倍并附加自己。现在,我可以这样做,以便我可以为每个可变的身高、体重、年龄等重复使用相同的方法。但这看起来并不干净,为每个变量一遍又一遍地写出相同的方法变量,如果说我有 30 个变量并且需要为所有变量定义相同的方法,那就更荒谬了。什么是干净的pythonic方式来做到这一点?我应该把一个类放在一个类里面吗?定义函数?

【问题讨论】:

  • 你可以让方法接受参数并相应地更新。喜欢def double(height): self.height = height*heightdef append(weight): self.weight = list(weight).appenf(weight)

标签: python python-3.x class methods


【解决方案1】:

您可以为要操作的变量创建一个类。 例如:

class Parameter:
    def __init__(self, value):
        self.value = value

    def double(self):
        self.value = 2*value

    def append(self):
        self.value = list(value).append(value) # I'm not sure what is your intention with this.

然后你这样使用它:

class Dog:
    def __init__ (self, height, weight, age):
        self.height = Parameter(height)
        self.weight = Parameter(weight)
        self.age = Parameter(age)

然后您可以像这样访问这些值:

dog = Dog(20, 30, 7)
dog.height.value
dog.height.double()
dog.height.append()

【讨论】:

    猜你喜欢
    • 2012-11-01
    • 2014-11-30
    • 2019-02-16
    • 1970-01-01
    • 2017-12-20
    • 1970-01-01
    • 2018-06-10
    • 1970-01-01
    • 2013-08-08
    相关资源
    最近更新 更多