所以,我第一次嘗試自己上課,偶然發現了以下錯誤:
Bücher-Tutorials.py:, line 30, in Mensch:
_init_(name="John", groesse="175cm", passwort="A", age="2")
TypeError: _init_() missing 1 required positional argument: 'self'
這是源代碼片段的片段:
{`class Mensch:
def _init_(self, name, age, groesse, passwort):
self.name = name
self.age = age
self.groesse = groesse
self.passwort = passwort
def gruessen(self):
print("Hallo,ich hei?e" name)
gruessen(self)
_init_(name="John", self="ad", groesse="175cm", passwort="A",age="2")```}
我嘗試創建一個名為 self 的引數,類似于這樣:
self.self = self,但是沒有用。任何人都可以幫助我,我真的很感激謝謝你,再見!編輯:成功了,謝謝!
uj5u.com熱心網友回復:
在Python函式中(或者更好地說method)__init__是 a [constructor][1],如果你想為它的類呼叫它,你只需要這樣做:
class MyClass:
def __init__(self, name):
self.name = name
MyObject = MyClass('name') # In this case the constructor is called
在 Python 類中,要獲取self函式查找初始化物件:
MyObject = MyClass('name') # In MyClass.__init__ MyObject will be self
在您的情況下,您只需以這種方式呼叫建構式:
MyObject = Mensch(name="John", self="ad", groesse="175cm", passwort="A",age="2")
由于__init__原型中的引數是位置...
def _init_(self, name, age, groesse, passwort) #Do you see they have a specific order?
...你可以這樣呼叫建構式:
MyObject = Mensch("John", '2', "175cm", "A")
關于班級
“類中的函式”被稱為實體的方法,實際上MyObject是“類的實體” Mensch。
你真的不應該宣告gruesseninside __init__,而是這樣做:
def __init__(self, ...):
...
self.gruessen() #This is the proper way to call a method
def gruessen(self):
print(f'Hallo,ich hei?e {self.name}')
uj5u.com熱心網友回復:
你不需要最后一行。
class Mensch:
def __init__(self, name, age, groesse, passwort): # __init__ instead of _init_
self.name = name
self.age = age
self.groesse = groesse
self.passwort = passwort
self.gruessen()
def gruessen(self): # this method can now be called from outside and by __init__
print("Hallo, ich hei?e " self.name)
Bob = Mensch(name="John", age="2", groesse="175cm", passwort="A")
Bob 在初始化后介紹自己,這將回傳:
Hallo, ich hei?e John
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/400807.html
