我正在做一个选课程序来练习OOP
# let's make a character selection program
class player:
def __init__(self, username, age, weight, height, gender):
self.username = username
self.age = age
self.weight = weight
self.height = height
self.gender = gender
class soldier(player):
strength = weight*height*2
print strength
print "Please enter the following"
player_username = raw_input("Please enter a username: ")
player_age = input("Please enter your age: ")
player_weight = input("Please enter your weight: ")
player_height = input("Please enter your height: ")
player_gender = raw_input("Please enter your gender: ")
player_character_class = raw_input("Please enter a player class: ")
character_obj = player(player_username, player_age, player_weight, player_height, player_gender)
print soldier.strength
但是,我得到了错误
Traceback (most recent call last):
File "character_select.py", line 11, in <module>
class soldier(player):
File "character_select.py", line 12, in soldier
strength = weight*height*2
NameError: name 'weight' is not defined
不太清楚体重是怎么定义的。我想我是通过把“player”转换成“solder”来继承的。有人能帮我吗?你知道吗
谢谢你!你知道吗
我冒昧地纠正了代码中的一些错误/误解-看看这是否有用:
以下是输出:
因为在
__init__()
中为player
分配属性,所以在player
实例化之前不会创建属性。但是,在soldier
类中,您试图在类创建时基于当时不存在的变量来设置类属性,因为它们只存在于实例(不同类的实例,而不是更少的实例)。你知道吗我认为您可能想做的是为
soldier
编写一个__init__()
方法。(我还冒昧地按照政治公众人物第8章将你们的班级名称大写。这有助于跟踪哪些名称引用类,即用于构造对象的模板,以及哪些名称引用类的实例。)然后实例化
Soldier
类而不是Player
类,因为您需要一个士兵:我要进一步指出:
不是函数调用。您没有将
Player
传递给Soldier
。相反,你说Soldier
是一种类型的Player
。因此,它具有Player
的所有属性和功能(您无需再次指定,这就是整个继承点)以及您在Soldier
中定义的任何其他属性和功能。但是,在声明Soldier
时,您不能直接访问Player
(或Player
实例)的属性(通常不需要它们)。你知道吗士兵是一个类,但你还没有实例化它。你试过实例化一个玩家,用字符\u obj,但是当你尝试打印士兵.xxx它看的是类,不是任何对象。你知道吗
相关问题 更多 >
编程相关推荐