Tác phẩm này và vui vẻ in 81:Tại sao `class X: mypow = pow` hoạt động? Còn về `self` thì sao?
class X:
mypow = pow
print(X().mypow(3, 4))
Nhưng tại sao? Không phải là phương pháp đưa ra đối số "tự" bổ sung và nên hoàn toàn bối rối?
Để so sánh, tôi cũng đã thử nó với riêng Pow
chức năng của tôi:
def Pow(x, y, z=None):
return x ** y
class Y:
myPow = Pow
print(Pow(3, 4))
print(Y().myPow(3, 4))
Chức năng trực tiếp gọi in 81 và các vụ đụng gọi phương thức như mong đợi, vì nó không có được điều đó thêm lập luận Ví dụ:
Python 3: TypeError: unsupported operand type(s) for ** or pow(): 'Y' and 'int'
Python 2: TypeError: unsupported operand type(s) for ** or pow(): 'instance' and 'int'
Tại sao/Pythons sở hữu pow
hoạt động ở đây như thế nào? The documentation không giúp đỡ và tôi không thể tìm thấy nguồn.
Tương tự như vậy nó được truyền cho 'Pow' của tôi? @PadraicCunningham –
Đó là vì thuộc tính '__self__' của hàm dựng sẵn không thể ghi được, do đó nó luôn là' None' cho 'pow'. –
@vaultah Hãy thử bằng Python 2. –