免责声明:这是我第一次尝试OOP,如果我对问题的解释不太清楚,我深表歉意。我已经尽力了,但是这个术语对我来说还是新的
你好。我正在学习一个关于面向对象编程的初级Python教程。本教程主要介绍父类和子类,以及子类如何从父类继承属性
为了解释这个原理,导师讨论了如何利用一个父类和几个不同的子类之间的关系来创造不同类型的硬币。父类称为“Coin”。这个儿童班叫Pound(我来自英国,所以我们用的是英国硬币)
import random
class Coin:
def __init__(self, rare = False, clean = True, heads = True, **kwargs):
for key,value in kwargs.items():
setattr(self,key,value)
self.is_rare = rare
self.is_clean = clean
self.heads = heads
if self.is_rare: # In the tutorial, rare coins are worth more than
self.value = self.original_value * 1.25
else:
self.value = self.original_value
if self.is_clean:
self.colour = self.clean_colour
else:
self.colour = self.rusty_colour
def rust(self):
self.colour = self.rusty_colour
def clean(self):
self.colour = self.clean_colour
def __del__(self):
print("Coin Spent!")
def flip(self):
heads_options = [True, False]
choice = random.choice(heads_options)
self.heads = choice
class Pound(Coin):
def __init__(self):
data = {
"original_value": 1.00,
"clean_colour": "gold",
"rusty_colour": "greenish",
"num_edges": 1,
"diameter": 22.5,
"thickness": 3.15,
"mass": 9.5
}
super().__init__(**data)
运行此代码时,我在IDLE中键入以下内容:
one_pound_coin = Pound()
one_pound_coin.colour
这给了“金子”。但是,如果我运行以下命令:
one_pound_coin.rust()
我收到一条错误消息,内容如下:
Traceback (most recent call last):
File "<pyshell#133>", line 1, in <module>
one_pound_coin.rust()
AttributeError: 'Pound' object has no attribute 'rust'
预期的行为完全不同。应该发生的是,修饰符运行时没有错误,然后,当您键入one_pound_coin.colour
IDLE时,应该返回“greenish”
奇怪的是,我使用的代码与导师使用的代码完全相同。我用细齿梳子仔细检查了每一个字符,每一个空格,每一件事。视频中的代码对导师有效,但对我无效。有人知道为什么吗
目前没有回答
相关问题 更多 >
编程相关推荐