访问类外的变量

时间:2015-06-01 19:04:07

标签: python python-2.7

假设我有两个构造函数方法构建的类。我可以通过定义外部函数来访问这些类的变量吗?例如:

class MyCat1():
    def __init__(self, weight1, speed1):
    self.weight1 = ...
    self.speed1 = ...

class MyCat2():
    def __init__(self, weight2, speed2):
    self.weight2 = ...
    self.speed2 = ...

def run(self, weight1, weight2, speed1, speed2):
    self.sum = weight1.speed1+ weight2.speed2
    x = self.sum
    return x

2 个答案:

答案 0 :(得分:2)

我认为这更接近你拍摄的内容。您只需要定义class一次,然后就可以根据需要制作尽可能多的实例。

class MyCat():
    def __init__(self, weight, speed):
        self.weight = weight
        self.speed = speed

这是一个免费功能,因此没有self,因此您只需传入MyCat的实例即可使用。您可以从实例中调用属性weightspeed

def run(cat1, cat2):
    return cat1.weight * cat1.speed + cat2.weight * cat2.speed

例如

>>> cat1 = MyCat(5, 10)
>>> cat2 = MyCat(3, 5)
>>> run(cat1, cat2)
65

答案 1 :(得分:2)

我会创建一个Cat类并将该方法保留在类中并将实例传递给方法:

class Cat(object):
    def __init__(self, weight, speed):
        self.weight = weight
        self.speed = speed

    def run(self,other):
        return self.weight * other.weight + self.speed * other.speed

cat1 = Cat(2, 2)
cat2 = Cat(3, 3)

print(cat1.run(cat2))
12

没有必要创建几乎相同的类,如果你决定拥有100只猫,它会变得非常艰难。