Tạo phân lớp python

Python là ngôn ngữ hướng đối tượng ngay từ đầu. Bởi vậy, việc tạo ra và sử dụng các lớp và các đối tượng là hết sức dễ dàng. Bài viết này sẽ giúp bạn trở thành một chuyên gia trong việc sử dụng hướng đối tượng Hỗ trợ lập trình Python

Dưới đây là những khái niệm cơ bản nhất

1. Tổng quan về OOP

  • Lớp (lớp). Được định nghĩa cho một đối tượng bao gồm một tập hợp các thuộc tính (thuộc tính) đặc trưng cho tất cả các đối tượng của lớp. thuộc tính bao gồm. thành viên dữ liệu và phương thức được gọi thông qua ký hiệu dấu chấm
  • Ví dụ. Một công cụ có thể thực hiện được của một lớp, có thể được gọi là có thể
  • sự vật. instance duy nhất chứa cấu trúc dữ liệu được định nghĩa bởi class. (Ví dụ. khai báo lớp HocSinh ta sẽ có đối tượng HocSinh, sau đó tạo biến nguyen_van_a = HocSinh() thì có thêm instance nguyen_van_a)
  • phương pháp. Hàm thực thi
  • Thành viên dữ liệu. Biến chứa dữ liệu bao gồm. biến lớp và biến thể hiện
  • Biến lớp. Use chung cho tất cả các đối tượng của lớp, được định nghĩa trong lớp mà không nằm trong các phương thức (hàm thực thi) nào cả. Các biến này không được sử dụng thông thường
  • biến thể hiện. biến được định nghĩa bên trong các phương thức và chỉ thuộc về các thể hiện (đối tượng thực thể của lớp)
  • nạp chồng hàm. phương thức định nghĩa các phép toán nhiều trường hợp tham gia (Ví dụ cộng 2 trường hợp, so sánh lớn hơn nhỏ hơn của 2 trường hợp,. )
  • Quá tải toán tử. Phép toán cần nhiều phương thức tham gia
  • Di sản. Chuyển giao các đặc tính của một lớp kế thừa từ một lớp khác
  • khởi tạo. Việc tạo ra một thể hiện của một lớp

2. Khai báo lớp học

class ClassName(object):
'''Đoạn văn mô tả về class'''

Ví dụ

class NhanVien(object):
  '''Lớp mô tả cho mọi nhân viên'''
  dem = 0

  def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      NhanVien.dem += 1

  def hien_thi_so_luong(self):
    print "Tổng số nhân viên được tạo: %d" % NhanVien.dem

  def hien_thi_nhan_vien(self):
      print "Tên: ", self.name,  ", Lương: ", self.salary
  • Biến đếm là biến lớp được sử dụng chung cho mọi trường hợp, được sử dụng bởi. NhânViên. dem from in or outside class đều được
  • Hàm __init __() là phương thức đặc biệt, được gọi là hàm tạo. Hàm này được Python tự động gọi khi một phiên bản mới được tạo ra
  • Các phương thức khi báo khai báo thì đều có tham số (đối số)self, tuy nhiên khi gọi thì bạn không truyền vì Python sẽ tự động truyền instance vào biến self đó

3. Tạo phiên bản

nhan_vien_dev = NhanVien('PhucLC', 5000)
nhan_vien_pm = NhanVien('MinhHT', 500)

Khi đó sẽ gọi hàm init() và truyền instance_1 vào self biến, truyền 'PhucLC' vào tên biến, truyền 5000 $ vào biến income. When used self. tên chính là instance_1. Tên

4. Truy cập thuộc tính

print "lương của pm", nhan_vien_dev.salary
nhan_vien_pm.hien_thi_nhan_vien()

Có thể tạo mới, sửa, xóa thuộc tính của class hay instance lúc nào cũng được

nhan_vien_pm.age = 28
nhan_vien_pm.girl_friend= 'Không có'
nhan_vien_pm.salary = 10000
del nhan_vien_pm.girl_friend

Ngoài ra, thông thường để truy cập các thuộc tính, có thể sử dụng các hàm có sẵn

  • **getattr(đối tượng, tên[, mặc định]). ** Truy thuộc tính tên của đối tượng obj, nếu đối tượng này không có thuộc tính thì trả về giá trị mặc định. Đối số mặc định khi không được truyền tải sẽ là Không có
getattr(nhan_vien_pm, 'age') #trả về 28
getattr(nhan_vien_pm, 'test') #trả về None, do không có thuộc tính 'test'
  • hasattr(đối tượng, tên). Trả lời Đúng/Sai, kiểm tra đối tượng có thuộc tính tên hay không
hasattr(nhan_vien_pm, 'age') #trả về True
hasattr(nhan_vien_pm, 'test') #trả về False
  • setattr(obj,tên,giá trị). gán giá trị cho thuộc tính. This Hàm tương thích với sự cho phép. đối tượng. tên = giá trị
 setattr(nhan_vien_pm, 'company', 'Framgia')
  • delattr(obj, tên). Xóa thuộc tính. Tương ứng
________số 8

5. Kế thừa lớp - Kế thừa

Thay vì định nghĩa một lớp mới hoàn toàn, bạn có thể kế thừa từ lớp (nhiều lớp-đa kế thừa) đã có (gọi là lớp cha). Lớp này sẽ bao gồm và có thể sử dụng mọi thuộc tính, phương thức của lớp cha đúng như chúng được định nghĩa tại lớp con

Lớp con cũng có thể ghi đè (định nghĩa lại) các thuộc tính của lớp cha

classA(object):
def test(self):
print "hello"

class B(A): pass
b = B()
b.test() # In ra hello

Bạn thấy đấy, lớp B không hề định nghĩa hàm test, nhưng do kế thừa A nên có thể sử dụng hàm test như đã được định nghĩa ở B. Overriding Methods – Ghi đè hàm

class NhanVien(object):
  '''Lớp mô tả cho mọi nhân viên'''
  dem = 0

  def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      NhanVien.dem += 1

  def hien_thi_so_luong(self):
    print "Tổng số nhân viên được tạo: %d" % NhanVien.dem

  def hien_thi_nhan_vien(self):
      print "Tên: ", self.name,  ", Lương: ", self.salary
0

6. Thuộc tính ẩn

Thuộc tính có tên bắt đầu bởi 2 dấu gạch dưới "__" là thuộc tính ẩn, không thể truy cập trực tiếp

class NhanVien(object):
  '''Lớp mô tả cho mọi nhân viên'''
  dem = 0

  def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      NhanVien.dem += 1

  def hien_thi_so_luong(self):
    print "Tổng số nhân viên được tạo: %d" % NhanVien.dem

  def hien_thi_nhan_vien(self):
      print "Tên: ", self.name,  ", Lương: ", self.salary
1

Tuy nhiên, bạn vẫn có thể truy cập bằng cách

class NhanVien(object):
  '''Lớp mô tả cho mọi nhân viên'''
  dem = 0

  def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      NhanVien.dem += 1

  def hien_thi_so_luong(self):
    print "Tổng số nhân viên được tạo: %d" % NhanVien.dem

  def hien_thi_nhan_vien(self):
      print "Tên: ", self.name,  ", Lương: ", self.salary
2

Lưu ý, đây không phải là thuộc tính riêng (riêng tư), mà chỉ giúp hạn chế truy cập (ẩn tính)

Bạn có thể tìm hiểu thêm về class trong Python tại đây. https. // tài liệu. con trăn. tổ chức/3. 5/hướng dẫn/lớp học. html