使用类变量的Python方法,正确的方法
我有一个关于python使用OOP的问题。 如果我有两个类和一个从这些类中获取变量的方法,我将这些类作为方法的参数传递,如下所示。我确信这不是正确的方法,这就是为什么我想知道一种更有效的替代方法。具体而言:使用类变量的Python方法,正确的方法,python,python-3.x,oop,Python,Python 3.x,Oop,我有一个关于python使用OOP的问题。 如果我有两个类和一个从这些类中获取变量的方法,我将这些类作为方法的参数传递,如下所示。我确信这不是正确的方法,这就是为什么我想知道一种更有效的替代方法。具体而言: class Player(object): x_player = 5 y_player = 5 class Food(object): x_food = 10 y_food = 10 def method(Player, Food): if Pla
class Player(object):
x_player = 5
y_player = 5
class Food(object):
x_food = 10
y_food = 10
def method(Player, Food):
if Player.x_player > Food.x_food:
print('Food behind)
if Player.x_player < Food.x_food:
print('Food in front')
class播放器(对象):
x_玩家=5
y_玩家=5
类别食物(对象):
食物=10
y_食物=10
def方法(玩家、食物):
如果Player.x_Player>Food.x_Food:
印刷品(‘食品后面’)
如果Player.x_Player
这是正确的吗?如果使用方法def\uuu init(self)\uuu
,则无法在函数中传递这些变量
class Player(object):
def __init__(self, x, y):
self.x_player = x
self.y_player = y
class Food(object):
def __init__(self, x, y):
self.x_food = x
self.y_food = y
def method(player, food):
if player.x_player > food.x_food:
print('Food behind')
if player.x_player < food.x_food:
print('Food in front')
method(Player(5, 5), Food(10, 10))
多谢各位
如果使用definit(self)方法,则无法在函数中传递这些变量
class Player(object):
def __init__(self, x, y):
self.x_player = x
self.y_player = y
class Food(object):
def __init__(self, x, y):
self.x_food = x
self.y_food = y
def method(player, food):
if player.x_player > food.x_food:
print('Food behind')
if player.x_player < food.x_food:
print('Food in front')
method(Player(5, 5), Food(10, 10))
这种理解是错误的,因为您可以将参数添加到\uuuu init\uuuu
这个怎么样?还是你仍然坚持使用课堂教学法?如果您选择class方法,您的解决方案已经可以了,只需使用方法(玩家、食物)
调用即可,甚至您不需要在函数中添加参数
class Player(object):
def __init__(self, x, y):
self.x_player = x
self.y_player = y
class Food(object):
def __init__(self, x, y):
self.x_food = x
self.y_food = y
def method(player, food):
if player.x_player > food.x_food:
print('Food behind')
if player.x_player < food.x_food:
print('Food in front')
method(Player(5, 5), Food(10, 10))
class播放器(对象):
定义初始化(self,x,y):
self.x_player=x
self.y_player=y
类别食物(对象):
定义初始化(self,x,y):
self.x_食物=x
self.y_食物=y
def方法(玩家、食物):
如果player.x_player>food.x_food:
打印(‘食物在后面’)
如果player.x_player
如果这些是类变量,您可以将这些变量称为classname.var\u name
:
class A:
a = 10
if __name__ == '__main__':
print(A.a)
如果值是由实例定义的,那么您需要实例化类变量,然后可以对其执行比较
class A:
def __init__(self, a):
self.a = a
if __name__ == '__main__':
x = A(5)
y = A(10)
print(x.a > y.a)
>> False
这也是python中的python
,在python中,您没有指定函数参数的数据类型,因此您可以发送任何对象,并且不必考虑它是哪个类的实例。如果发送了错误的类对象,代码应该处理异常
class A:
def __init__(self, a):
self.a = a
class B:
def __init__(self, a):
self.a = a
def fun(obj):
print(obj.a)
if __name__ == '__main__':
x = A(5)
y = B(10)
fun(x)
fun(y)
>> 5
>> 10
您可能需要再次阅读OOP教程您是否真的在任何地方实例化了类?您似乎正在将类本身用作对象。(无法确定,因为您没有显示如何调用
方法
),如果我的答案对您有帮助,您可以接受