Không, không cần thiết.
Ví dụ:
class A(object):
def f():
print 'foo'
Và bạn có thể sử dụng tất nhiên nó, theo cách này:
a = A()
a.f()
Trong thực tế, bạn thậm chí có thể định nghĩa một lớp theo cách này.
class A:
pass
Tuy nhiên, việc xác định __init__
là một thực tế phổ biến bởi vì trường hợp của một lớp thường được lưu trữ một số loại nhập các thông tin trạng thái hoặc dữ liệu và các phương thức của lớp cung cấp một cách để thao tác hoặc làm điều gì đó với thông tin trạng thái hoặc dữ liệu. __init__
cho phép chúng tôi khởi tạo thông tin hoặc dữ liệu trạng thái này trong khi tạo một thể hiện của lớp.
Dưới đây là ví dụ hoàn chỉnh.
class BankAccount(object):
def __init__(self, deposit):
self.amount = deposit
def withdraw(self, amount):
self.amount -= amount
def deposit(self, amount):
self.amount += amount
def balance(self):
return self.amount
# Let me create an instance of 'BankAccount' class with the initial
# balance as $2000.
myAccount = BankAccount(2000)
# Let me check if the balance is right.
print myAccount.balance()
# Let me deposit my salary
myAccount.deposit(10000)
# Let me withdraw some money to buy dinner.
myAccount.withdraw(15)
# What's the balance left?
print myAccount.balance()
Ví dụ của lớp luôn được chuyển làm đối số đầu tiên cho phương thức của lớp. Ví dụ: nếu có class A
và bạn có một phiên bản a = A()
, bất cứ khi nào bạn gọi a.foo(x, y)
, Python
, hãy gọi foo(a, x, y)
của class A
tự động. (Lưu ý đối số đầu tiên.) Theo quy ước, chúng tôi đặt đối số đầu tiên này là self
.
Nguồn
2011-07-28 04:29:48
bạn có thể giải thích chi tiết về việc sử dụng __init __ ??? – NOOB
ITYM 'a = A()', mặc dù 'a = A' cũng hoạt động nhưng có điều gì đó khác. –
Alok, Cảm ơn. Sửa lỗi. –