Python: Truy cập các thuộc tính và phương thức của đối tượng


Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên

Mỗi đối tượng có hai loại thành phần là các thuộc tính và các phương thức. Các thuộc tính định nghĩa các đặc điểm của một đối tượng đã tạo từ lớp và còn được gọi là các biến thể hiện. Các phương thức được sử dụng để thực thi các hành vi của các đối tượng và còn được gọi là các phương thức thể hiện.

1. Truy cập các thuộc tính

Các thuộc tính được khai báo theo cách tương tự với các biến cục bộ, nhưng phải nằm bên ngoài bất kỳ một định nghĩa phương thức nào.

Để truy cập vào thuộc tính của đối tượng ta sử dụng toán tử dấu chấm (.).

Ví dụ sau đây thể hiện việc tạo một đối tượng có tên cat trong phương thức main(), sau đó sử dụng toán tử (.) để truy cập vào các thành phần thuộc tính của nó.

#tạo lớp Animal:
class Animal:
  #khai báo các thuộc tính:
  id=1234; #mã nhận diện
  name="Moon"; #tên
  age=1; #tuổi
  
#tạo một đối tượng tên cat
cat = Animal()
cat.id=1234 #truy cập để thiết lập (set) giá trị cho thuộc tính id
print("ID của cat là:",cat.id) #truy cập để lấy (get) thông tin của id
cat.name="Moon"
print("Name:",cat.name)
cat.age=2
print("Age:",cat.age)

Kết quả:

ID của cat là: 1234
Name: Moon
Age: 2

2. Truy cập các phương thức

Các phương thức thể hiện là các hàm được khai báo trong một lớp và được sử dụng để giải quyết các hoạt động hay hành vi trên các đối tượng.

Những quy ước sau đây cần phải được tuân theo trong khi đặt tên cho một phương thức:

- Không được là từ khóa.

- Không được chứa dấu cách.

- Không được bắt đầu bằng số.

- Có thể bắt đầu bằng ký tự thường, ký tự gạch dưới.

- Nên là một động từ hoặc cụm động từ thể hiện hanh vi tương ứng của đối tượng.

- Nên có tính mô tả và có ý nghĩa.

- Tên nên có nhiều từ với từ đầu tiên là một động từ viết bằng chữ thường, các từ sau là tính từ, danh từ, ... và ký tự đầu tiên của mỗi từ sau là chữ in hoa. Ví dụ như nhapLieu(), hienThiThongTin(), tinhTong(), tinhBietThucDelta().

Cú pháp chi tiết định nghĩa một phương thức thể hiện trong một lớp là như sau:

def tên_phương_thức (self [,danh_sách_tham_số]) {
  // Thân của phương thức
  //[return giá_trị;]

trong đó,

tên_phương_thức: Là tên phương thức.

danh_sách_tham_số: Là các giá trị truyền tới phương thức. Phương thức có thể không có tham số, nhưng self đặt trong cặp ngoặc tròn bắt buộc phải có.

return giá_trị;: Trả giá_trị về nơi gọi phương thức.

Mỗi thể hiện của lớp có các biến thể hiện của chính nó, nhưng các phương thức thể hiện được chia sẻ bởi tất cả các thể hiện của lớp trong quá trình thực thi.

Một phương thức của đối tượng có thể truy cập các thuộc tính của đối tượng đó.

Để truy cập các phương thức của một đối tượng ta sử dụng toán tử (.).

Ví dụ sau thể hiện cách định nghĩa các phương thức thể hiện của lớp Animal, sau đó tạo một đối tượng cat rồi dùng toán tử (.) để truy cập các phương thức của đối tượng đó.

#tạo lớp Animal:
class Animal:
  #khai báo các thuộc tính:
  id=1234; #mã nhận diện
  name="Moon"; #tên
  age=1; #tuổi

  #định nghĩa phương inputInfo()
  #để nhập thông tin cho các thuộc tính:
  def inputInfo(self):
    self.id = int(input("Mời nhập id: "))
    self.name = input("Mời nhập tên: ")
    self.age = int(input("Mời nhập tuổi: "))

  #định nghĩa phương thức showInfo()
  #để hiển thị thông tin đối tượng:
  def showInfo(self):
    print("ID:",self.id)
    print("Name:",self.name);
    print("Age:",self.age);

#tạo 1 đối tượng tên cat
cat = Animal()
cat.inputInfo() #truy cập phương thức inputInfo() để nhập thông tin cho cat
cat.showInfo() #truy cập phương thức showInfo() để hiển thị thôn tin cho cat

Kết quả demo:

Mời nhập id: 5678
Mời nhập tên: Tam thể
Mời nhập tuổi: 3
ID: 5678
Name: Tam thể
Age: 3

Vì các phương thức là một phần của khai báo lớp, nên chúng có thể truy cập các thành phần khác của lớp, chẳng hạn như các biến thể hiện và các phương thức khác của lớp.

3. Gọi (calling) một phương thức

Như vậy là ta có thể truy cập một phương thức của lớp bằng cách tạo một đối tượng của lớp. Để gọi một phương thức, ta sử dụng tên đối tượng, theo sau là toán tử dấu chấm (.) và sau đó là tên phương thức muốn gọi.

Trong Python ta có thể gọi một phương thức từ một phương thức khác. Phương thức gọi phương thức khác thì được gọi là phương thức calling. Phương thức được gọi thì gọi là phương thức called. Sau khi thực thi tất cả các câu lệnh trong khối lệnh của phương thức called, thì quyền điều khiển sẽ được trả lại cho phương thức calling.

Ví dụ dưới đây định nghĩa một lớp có tên PhuongTrinhBac2 gồm:

- Các thuộc tính a, b, c thể hiện các hệ số a, b, c của phương trình bậc 2.

- Phương thức nhapCacHeSo() để nhập liệu cho các thuộc tính a, b, c.

- Phương thức tinhBietThucDelta() để tính và trả về biệt thức delta.

- Phương thức xacDinhNghiem() dùng để xác định nghiệm, trong đó có lời gọi (calling) đến phương thức (called) tinhBietThucDelta() để lấy giá trị của delta.

Chương trình được viết như sau:

File PhuongTrinhBac2.py:

import math

class PhuongTrinhBac2:
  a=0
  b=0
  c=0

  def nhapCacHeSo(self):
    self.a = float(input("Mời nhập hệ số a: "))
    self.b = float(input("Mời nhập hệ số b: "))
    self.c = float(input("Mời nhập hệ số c: "))

  def tinhBietThucDelta(self):
    return self.b**2 - 4 * self.a * self.c;

  def xacDinhNghiem(self):
    if (self.a == 0):
      if (self.b == 0):
        if (self.c == 0):
          print("Phương trình có vô số nghiệm!")
        else:
          print("Phương trình vô nghiệm!");
      else:
        print("Phương trình có 1 nghiệm, x =",(-self.c / self.b));
    else:
      delta = self.tinhBietThucDelta() #có lời gọi (calling) đến phương thức khác
      if (delta < 0):
        print("Phương trình vô nghiệm!");
      elif (delta == 0):
        print("Phương trình có nghiệm kép, x1 = x2 =",(-self.b / (2 * self.a)));
      else:
        print("Phương trình có 2 nghiệm phân biệt:");
        print("x1 =",((-self.b + math.sqrt(delta)) / (2 * self.a)));
        print("x2 =",((-self.b - math.sqrt(delta)) / (2 * self.a)));

#tạo một đối tượng:
objPTB2 = PhuongTrinhBac2();
objPTB2.nhapCacHeSo();
objPTB2.xacDinhNghiem();

Kết quả demo:

Mời nhập hệ số a: 1
Mời nhập hệ số b: 3
Mời nhập hệ số c: 2
Phương trình có 2 nghiệm phân biệt:
x1 = -1.0
x2 = -2.0
» Tiếp: Hàm tạo (Constructor)
« Trước: Tạo Lớp và Đối tượng
Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên
Copied !!!