Tôi mong đợi mã sau đây để innhưng nó in 012012. Tại sao? Tôi hy vọng các cuộc gọi sẽ không thể truy cập các biến tương tự vì chúng được thừa hưởng từ cùng một lớp nhưng chúng là các biến khác nhau rõ ràng.phương pháp và lớp thừa kế python
class a(object):
var = 0
@classmethod
def incr(cls):
print cls.var
cls.var+=1
class b(a):
def func(self):
super(b,self).incr()
class c(a):
def func(self):
super(c,self).incr()
t = a()
t1 = b()
t2 = c()
t1.func()
t1.func()
t1.func()
t2.func()
t2.func()
t2.func()
Nó không ảnh hưởng đến hành vi bất ngờ bạn đang nhìn thấy, nhưng tôi muốn lưu ý rằng bạn không cần phải sử dụng 'super' ở đây trong một trong các lớp con của bạn. Bạn có thể chỉ cần gọi 'self.incr()' để thay thế. Bạn chỉ cần sử dụng 'super' khi bạn muốn bỏ qua một phiên bản khác của hàm (thường là vì bạn đã ghi đè trong lớp hiện tại). – Blckknght
Bạn nên chuyển sang Python 3.6. https://pythonclock.org/ – wwii