Bài học theo mô-đun (1/4)
Các lớp và phiên bản
class là bản thiết kế để tạo các đối tượng có dữ liệu (thuộc tính) và hành vi (phương pháp). Một instance là một đối tượng cụ thể được tạo từ lớp học.
Cú pháp tối thiểu
class Cane:
def __init__(self, nome, eta):
self.nome = nome
self.eta = eta
def abbaia(self):
return f"{self.nome} dice WOOF!"
# creazione di istanze
fido = Cane("Fido", 3)
luna = Cane("Luna", 5)
fido.nome # 'Fido'
fido.abbaia() # 'Fido dice WOOF!'__init__: "hàm tạo"
Phương thức __init__ được gọi tự động khi bạn tạo một
ví dụ (Cane("Fido", 3)). Nó được sử dụng để khởi tạo các thuộc tính.
Về mặt kỹ thuật, nó không phải là hàm tạo (đối tượng đã được tạo bởi
__new__), nhưng đó là nơi bạn đặt trạng thái ban đầu.
self: tham số đầu tiên
self là tham chiếu đến phiên bản mà phương thức được gọi. Đó là một
quy ước (không phải từ khóa) và luôn là tham số đầu tiên của phiên bản
phương pháp.
fido.abbaia()
# equivalente a Cane.abbaia(fido)
# Python passa fido come self automaticamenteThuộc tính sơ thẩm và lớp
class Cane:
specie = "Canis familiaris" # attributo di CLASSE (condiviso)
def __init__(self, nome):
self.nome = nome # attributo di ISTANZA (per ognuno)
fido = Cane("Fido")
luna = Cane("Luna")
fido.nome # 'Fido' (istanza)
luna.nome # 'Luna' (istanza)
fido.specie # 'Canis familiaris' (cercato sulla classe)
Cane.specie # 'Canis familiaris'Nhiều phương thức và trạng thái
class Contatore:
def __init__(self, inizio=0):
self.valore = inizio
def incrementa(self, di=1):
self.valore += di
def reset(self):
self.valore = 0
c = Contatore()
c.incrementa()
c.incrementa(di=5)
c.valore # 6
c.reset()
c.valore # 0Đến lượt bạn
Xác định một lớp `Point` với __init__(self, x, y) để lưu trữ các thuộc tính. Thêm phương thức `distance_from_origin` để trả về căn bậc hai của x^2 + y^2. Tạo `p = Point(3, 4)` và đánh giá `p.distance_from_origin()`.
Hiển thị gợi ý
math.sqrt(self.x ** 2 + self.y ** 2)
Giải pháp khả dụng sau 3 lần thử
Xem lại bài tập
Xác định `BankAccount` với __init__(self, Balance=0) và các phương thức `deposit(amount)`, `rút(amount)` để sửa đổi self.balance. Tạo `a = BankAccount(100)`, gửi 50, rút 30. Đánh giá `a.balance`.
Hiển thị gợi ý
self.balance += số tiền gửi.
Giải pháp khả dụng sau 3 lần thử
Thử thách bổ sung
Define a class `Rectangle` with a constructor `__init__(self, width, height)` to set width and height, and a method `area(self)` that returns the product of width and height. Instantiate a rectangle with width `4` and height `5` storing it in `rect`, and evaluate `rect.area()`.
Hiển thị gợi ý
Hãy nhớ sử dụng bản thân để truy cập các thuộc tính bên trong khu vực (bản thân).
Giải pháp khả dụng sau 3 lần thử