1
class Employee:

    def __init__(self, first, last):
        self.first = first
        self.last = last

    def fullname():
        return '{} {}'.format(self.first, self.last)

emp = Employee('Rob', 'M')

print (emp.fullname())

selffullname メソッドでキーワードを省略したことに気付くと思いますが、次のようになります。

TypeError: fullname() takes 0 positional arguments but 1 was given

これは実際には引数エラーですか? 私の推測ではノーだったので、試してみました:

class Employee:

    def __init__(foo, first, last):
        foo.first = first
        foo.last = last

    def fullname():
        return '{} {}'.format(self.first, self.last)

emp = Employee('rob', 'm')

print(emp.fullname())

の return ステートメントから self を除外するなど、その他のいくつかのことfullname()。ただし、変更の各方法は、エラーがTypeError. だから私は困惑しています、なぜfullname()議論が渡されているのですか?

4

3 に答える 3

1

次のように定義してみてください。

def fullname(self):
    [...]

self引数は暗黙的にメソッド呼び出しに渡されます。メソッドが呼び出されたオブジェクトへの参照を表します。

于 2018-07-03T22:45:25.370 に答える