Chuyển đến nội dung chính
Mô-đun 7 · Bài học 1 trong tổng số 425/36 trong khóa học~14 min
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

Python
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.

Python
fido.abbaia()
# equivalente a Cane.abbaia(fido)
# Python passa fido come self automaticamente

Thuộc tính sơ thẩm và lớp

Python
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

Python
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

tập thể dục#python.m7.l1.e1
Nỗ lực: 0Đang tải…

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()`.

Đang tải trình chỉnh sửa…
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

tập thể dục#python.m7.l1.e2
Nỗ lực: 0Đang tải…

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`.

Đang tải trình chỉnh sửa…
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

tập thể dục#python.m7.l1.e3
Nỗ lực: 0Đang tải…

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()`.

Đang tải trình chỉnh sửa…
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ử