通过Python中的函数设置对象属性
我很少有面向对象编程的经验,特别是在Python方面。我有两门课:通过Python中的函数设置对象属性,python,python-3.x,oop,inheritance,Python,Python 3.x,Oop,Inheritance,我很少有面向对象编程的经验,特别是在Python方面。我有两门课: def set_other_values(data): self.apple = "data" class Something(Else): def __init__(self, **kwargs): super.__init__(**kwargs) self.apple = '' self.mango = '' def something_f
def set_other_values(data):
self.apple = "data"
class Something(Else):
def __init__(self, **kwargs):
super.__init__(**kwargs)
self.apple = ''
self.mango = ''
def something_function(self):
// Python Code
class Anything(Something):
def construct(self):
self.mango = "10 Mangoes"
set_other_values(data)
self.something_function()
根据我的理解,当实例化任何东西时,它首先从某物调用\uu init()。然后在Anything
的构造函数中初始化变量,我们也可以在那里调用一些父函数
还有更多的类,如Anything
,其中类属性的值将由动态数据设置。我定义了一个名为set\u other\u variables()
的函数来设置所有这些属性的值。然而,我不断得到关于未定义的self
的错误
我应该在何处以及如何通过函数set_other_values()
定义,以便它为所有类设置值,而不会出现关于self
的任何错误
我试图在Something
中定义它,然后从Anything
调用它,比如:
class Something(Else):
def __init__(self, **kwargs):
super.__init__(**kwargs)
self.apple = ''
self.mango = ''
def something_function(self):
// Python Code
def set_other_values(data):
self.apple = "data"
class Anything(Something):
def construct(self):
self.mango = "10 Mangoes"
self.set_other_values(data)
self.something_function()
但是,我得到了关于1位置参数的错误,但是为set\u other\u values()
提供了2个,您应该使用setattr,这样可以防止程序停止
def set_atrributes(self, **kwargs):
for key in kwargs:
if hasattr(self, key):
setattr(self, key, kwargs[key])
请确保您的问题具有有效的Python语法。请注意,“根据我的理解,当任何东西被实例化时,它首先从某个东西调用init()”是错误的——就像任何其他方法一样,\uuuuuu init\uuuuuuuu
必须显式地调用其父实现(例如,如果需要,通过super()。\uuuuuu init\uuuuuuuu
)。语法高亮显示已经显示了一些(类的类型)。但是,制定答案通常需要根据问题代码显示有效的代码,因此运行它是一个给定的过程。如果没有有效的代码,就不可能首先说出错误的位置和原因。您可能已经因为不必调用父级\uuuuuu init\uuuu
(并获取其参数)而产生错误,但这只是一个猜测。如图所示,其他\u值
不采用self
参数。但是,应该这样做。您定义设置其他值
,并尝试使用变量self
,但在该范围内的任何地方都没有定义该变量self
只是给函数的第一个参数的传统名称,该函数在类中用作方法。当在类的实例上调用该方法时,它将作为第一个参数隐式地传递给该实例。如果要使用类外的函数,必须手动调用该函数并显式地将其传递给实例。您可以将myu实例.method()
视为MyClass.method(myu实例)
,尽管它的工作原理与此不同。