假设我有两个构造函数方法构建的类。我可以通过定义外部函数来访问这些类的变量吗?例如:
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
答案 0 :(得分:2)
我认为这更接近你拍摄的内容。您只需要定义class
一次,然后就可以根据需要制作尽可能多的实例。
class MyCat():
def __init__(self, weight, speed):
self.weight = weight
self.speed = speed
这是一个免费功能,因此没有self
,因此您只需传入MyCat
的实例即可使用。您可以从实例中调用属性weight
和speed
。
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只猫,它会变得非常艰难。