Giải phẫu lớp: thuộc tính và phương thức

Lập trình hướng đối tượng trong Python

Alex Yarosh

Content Quality Analyst @ DataCamp

Lớp cơ bản

class Customer:

# code for class goes here
pass
  • class <name>: bắt đầu định nghĩa lớp
  • mã bên trong class được thụt vào
  • dùng pass để tạo lớp “rỗng”
c1 = Customer()
c2 = Customer()
  • dùng ClassName() để tạo đối tượng của lớp ClassName
Lập trình hướng đối tượng trong Python

Thêm phương thức vào lớp

class Customer:  

    def identify(self, name):   
      print("I am Customer " + name)
  • định nghĩa phương thức = định nghĩa hàm trong lớp
  • dùng self làm đối số đầu tiên khi định nghĩa phương thức
cust = Customer()
cust.identify("Laura")
I am Customer Laura
  • bỏ qua self khi gọi phương thức từ một đối tượng
Lập trình hướng đối tượng trong Python
class Customer:  

    def identify(self, name):   
      print("I am Customer " + name)

cust = Customer()
cust.identify("Laura")

self là gì?

  • lớp là khuôn mẫu; tham chiếu dữ liệu của đối tượng cụ thể như thế nào?
  • self là đại diện cho đối tượng cụ thể dùng trong định nghĩa lớp
  • phải là đối số đầu tiên của mọi phương thức
  • Python sẽ tự xử lý self khi gọi phương thức từ một đối tượng:

cust.identify("Laura") được hiểu là Customer.identify(cust, "Laura")

Lập trình hướng đối tượng trong Python

Cần có thuộc tính

  • Đóng gói (Encapsulation): gộp dữ liệu với các phương thức thao tác trên dữ liệu
  • Ví dụ: tên của Customer nên là một thuộc tính

  $$\text{\Large{Thuộc tính được tạo bằng phép gán (=) trong phương thức}}$$

Lập trình hướng đối tượng trong Python

Thêm thuộc tính cho lớp

class Customer:  
    # set the name attribute of an object to new_name
    def set_name(self, new_name):

# Create an attribute by assigning a value self.name = new_name # <-- will create .name when set_name is called
cust = Customer()                   # <--.name doesn't exist here yet

cust.set_name("Lara de Silva") # <--.name is created and set to "Lara de Silva"
print(cust.name) # <--.name can be used
Lara de Silva
Lập trình hướng đối tượng trong Python

Phiên bản cũ

class Customer:  



    # Using a parameter
    def identify(self, name):   
      print("I am Customer" + name)
cust = Customer()

cust.identify("Eris Odoro")
I am Customer Eris Odoro

Phiên bản mới

class Customer:  
   def set_name(self, new_name): 
      self.name = new_name

    # Dùng .name từ chính đối tượng
    def identify(self):     
      print("I am Customer" + self.name)
cust = Customer()
cust.set_name("Rashid Volkov")
cust.identify()
I am Customer Rashid Volkov
Lập trình hướng đối tượng trong Python

Ayo berlatih!

Lập trình hướng đối tượng trong Python

Preparing Video For Download...