Các đối tượng lớp hỗ trợ hai loại hoạt động: tham chiếu thuộc tính và khởi tạo
Tham chiếu thuộc tính sử dụng cú pháp tiêu chuẩn được sử dụng cho tất cả các tham chiếu thuộc tính trong Python: obj.name. Tên thuộc tính hợp lệ là tất cả các tên trong không gian tên của lớp khi đối tượng lớp được tạo. Vì vậy, nếu định nghĩa lớp trông như thế này:
class MyClass:
"""A simple example class"""
i = 12345
def f(self):
return 'hello world'
sau đó MyClass.i
và MyClass.f
là các tham chiếu thuộc tính hợp lệ, trả về một số nguyên và một đối tượng hàm, tương ứng. Các thuộc tính lớp cũng có thể được gán cho, vì vậy bạn có thể thay đổi giá trị của MyClass.i
phép gán. __doc__
cũng là một thuộc tính hợp lệ, trả về chuỗi doc thuộc về lớp: "Một lớp ví dụ đơn giản".
Lớp khởi tạo sử dụng ký hiệu hàm. Chỉ cần giả vờ rằng đối tượng lớp là một hàm không tham số trả về một thể hiện mới của lớp. Ví dụ:
x = MyClass()
Các instantiation hoạt động ( “kêu gọi” một đối tượng lớp) tạo ra một đối tượng rỗng. Nhiều lớp muốn tạo các đối tượng với các thể hiện được tùy chỉnh theo trạng thái ban đầu cụ thể. Do đó, một lớp có thể định nghĩa một phương thức đặc biệt có tên __init__()
, như thế này:
def __init__(self):
self.data = []
Khi một lớp định nghĩa một __init__()
phương thức, việc khởi tạo lớp sẽ tự động gọi ra __init__()
đối tượng lớp mới được tạo. Vì vậy, trong ví dụ này, một thể hiện mới, khởi tạo có thể thu được bằng cách:
x = MyClass()
Tất nhiên, __init__()
phương pháp có thể có các đối số để linh hoạt hơn. Trong trường hợp đó, các đối số được cung cấp cho toán tử khởi tạo lớp được truyền vào __init__()
. Ví dụ,
class Complex:
def __init__(self, realpart, imagpart):
self.r = realpart
self.i = imagpart
x = Complex(3.0, -4.5)
x.r, x.i
Lấy từ tài liệu chính thức giúp tôi nhiều nhất cuối cùng.
Đây là ví dụ của tôi
class Bill():
def __init__(self,apples,figs,dates):
self.apples = apples
self.figs = figs
self.dates = dates
self.bill = apples + figs + dates
print ("Buy",self.apples,"apples", self.figs,"figs
and",self.dates,"dates.
Total fruitty bill is",self.bill," pieces of fruit :)")
Khi bạn tạo cá thể của lớp Bill:
purchase = Bill(5,6,7)
Bạn lấy:
> Buy 5 apples 6 figs and 7 dates. Total fruitty bill is 18 pieces of
> fruit :)
x = 'Hello'
bên ngoài init nhưng bên trong lớp học? nó giống như java khi nó giống nhau hay nó trở thành một biến tĩnh chỉ được khởi tạo một lần?