Tôi có đoạn code sau đây, trong đó có hai vấn đề sau đây:phương pháp chính trong Python
Traceback (most recent call last):
File "C:\Users\v\workspace\first\src\tests.py", line 1, in <module>
class Animal:
File "C:\Users\v\workspace\first\src\tests.py", line 39, in Animal
File "C:\Users\v\workspace\first\src\tests.py", line 31, in main
dog = Animal()
NameError: global name 'Animal' is not defined
Mã này là từ một hướng dẫn, và trong hướng dẫn nó hoạt động tốt. Tôi có Python 2.7 và sử dụng plugin PyDev cho Eclipse.
class Animal:
__hungry = "yes"
__name = "no name"
__owner = "no owner"
def __init__(self):
pass
def set_owner(self,newOwner):
self.__owner= newOwner
return
def get_owner(self):
return self.__owner
def set_name(self,newName):
self.__name= newName
return
def get_name(self):
return self.__name
def noise(self):
print('errr')
return
def __hiddenmethod(self):
print("hard to find")
def main():
dog = Animal()
dog.set_owner('Sue')
print dog.get_owner()
dog.noise()
if __name__ =='__main__':main()
Bạn có thể cung cấp liên kết đến hướng dẫn đó không? Ai viết nó nên bị bắn, hoặc ít nhất bị cấm viết nữa. Đó là * không * cách bạn viết các thuộc tính lớp trong Python. –
Nghe Daniel và tra cứu trang trí '@ property' bằng Python. Bạn không phải viết getters và setters như thế. – katrielalex
Cũng không sử dụng tên gạch dưới kép - chúng ở đó cho một trường hợp sử dụng rất cụ thể. Nếu bạn muốn chỉ ra rằng một thuộc tính là "chỉ sử dụng nội bộ" thì hãy sử dụng một dấu gạch dưới để thay thế. – katrielalex