我是python的OOP编程的新手,我想知道为什么python让我们在对象实例上创建新属性。创建不遵循类设计的新属性有什么意义?
class Shark:
def __init__(self, name, age):
self.name = name
self.age = age
new_shark = Shark("Sammy", 5)
print(new_shark.age)
new_shark.pi = 3.14
print(new_shark.pi)
我希望python会产生错误,但它会打印3.14
*每个答案涵盖了不同的领域。非常感谢您
答案 0 :(得分:1)
new_shark.pi = 3.14
意味着向类对象添加一个新属性(如果不存在)。
之后
new_shark.pi = 3.14
该类对象将具有:
self.name
self.age
self.pi
三个属性
答案 1 :(得分:1)
Python和其他OOP语言允许类从基类继承,甚至覆盖基类方法。想象以下内容!您拥有游戏中所有角色的基类。基类处理诸如位置,角色名称,库存,服装等内容,并负责更新和渲染等。您有一个根据某种算法处理运动的敌方子类,以及处理某种算法的玩家子类。基于用户输入的运动。也许敌人不需要存货,但玩家需要。这有道理吗?
答案 2 :(得分:1)
这里是指向类似问题的链接,其中包含许多有用的答案:Why is adding attributes to an already instantiated object allowed?
现在我的答案。 Python是一种动态语言,意味着可以在运行时更改事物以执行。但是重要的是要意识到,问题的答案更多是风格和意见问题。
使用所有需要的变量实例化您的类,这为您带来封装的好处,并且使您知道每次实例化该类时都可以访问该变量,这是安全的。另一方面,在实例化之后添加变量可能会在特定用例中为您带来不同的好处。