Professional Documents
Culture Documents
Chuong 2 - Python - Class
Chuong 2 - Python - Class
1
2.1 Class trong python:
2.1.1 Giới thiệu:
Class (lớp) dùng để khai báo cấu trúc thuộc tính và
hành động cho một đối tượng nào đó.
Class trong python được khai báo với từ khóa class theo
cấu trúc sau:
class class_name:
‘‘‘docstring’’’
#code
Trong đó:
- class_name: tên của class dùng để phân biệt
- docstring: chú thích về class
- code: các câu lệnh của class
01/2009 2
2.1 Class trong python:
VD:
Câu lệnh khai báo class sinh viên (SV) đơn giản:
class SV:
# class sinh viên
pass
Lưu ý:
- Khi khai báo class, có thể không cần docstring
- Trong một class phải có chứa ít nhất 1 câu lệnh
- Class có thể bao gồm thuộc tính (attribute), phương thức (method)
và phương thức khởi tạo (constructor)
01/2009 3
2.1 Class trong python:
VD:
Câu lệnh khai báo class sinh viên (SV) đơn giản:
class SV:
# class sinh viên
pass
Lưu ý:
- Khi khai báo class, có thể không cần docstring
- Trong một class phải có chứa ít nhất 1 câu lệnh
- Class có thể bao gồm thuộc tính (attribute), phương thức (method)
và phương thức khởi tạo (constructor)
01/2009 4
2.1 Class trong python:
2.1.2 Thuộc tính của lớp (class attribute):
Thuộc tính trong class tương tự như biến trong lập trình
hướng cấu trúc.
Để khai báo thuộc tính, sử dụng cách khai báo tương tự
khai báo biến:
class SV:
nganh_hoc = ‘CĐT’
khoa_hoc = 2020
Lưu ý:
- Class SV trên có 2 thuộc tính (attribute) là nganh_hoc và
khoa_hoc
- Các thuộc tính dùng để phân biệt các đối tượng trong class
01/2009 5
2.1 Class trong python:
2.1.3 Phương thức (method):
Phương thức là các hàm (function) được khai báo trong
class.
Để khai báo phương thức, sử dụng cách khai báo tương
tự khai báo hàm thông thường:
class SV:
nganh_hoc = ‘CĐT’
khoa_hoc = ‘2020’
def Add(self,ms,ten):
self.id = ms
self.name = ten
01/2009 6
2.1 Class trong python:
2.1.3 Phương thức (method):
Lưu ý:
- Từ khóa self dùng để chỉ chính class đang làm việc, cho
phép tương tác với các giá trị có trong class
- Phương thức (method): luôn có tham số đầu tiên là self, các
tham số khác nếu có phải đứng sau tham số self
- Trong class không có giới hạn về số lượng phương thức
- Phương thức có thể trùng tên với hàm nằm ngoài class
nhưng không được trùng tên với các phương thức khác trong
class
01/2009 7
2.2 Sử dụng class:
2.2.1 Tạo đối tượng:
Sau khi khai báo class, ta có thể khởi tạo class (tạo đối
tượng).
Để khởi tạo class, dùng cú pháp đơn giản sau:
Object_name = class_name()
Trong:
- Object_name: tên của đối tượng khởi tạo
- Class_name: tên của class đã khai báo trước đó
01/2009 8
2.2 Sử dụng class:
2.2.1 Tạo đối tượng:
Lưu ý:
- Có thể tạo nhiều đối tượng từ một class
- Các đối tượng thường có tên khác nhau
- Nếu có đối tượng trùng tên, python hiểu là tạo lại đối tượng
- Sau khi tạo đối tượng, có thể truy xuất đến các thuộc tính của class
thông qua đối tượng
- Khi truy xuất thuộc tính hoặc phương thức của đối tượng, phải
thông qua tên của đối tượng
01/2009 9
2.2 Sử dụng class:
2.2.1 Tạo đối tượng:
class SV:
nganh_hoc = ‘CĐT’
khoa_hoc = ‘2020’
def Add(self,ms,ten):
self.id = ms
self.name = ten
A = SV()
A.id = 20146111
A.name = ‘Nguyễn Văn A’
print(A.name)
01/2009 10
2.2 Sử dụng class:
2.2.1 Tạo đối tượng:
class SV:
nganh_hoc = ‘CĐT’
khoa_hoc = ‘2020’
def Add(self,ms,ten):
self.id = ms
self.name = ten
A = SV()
A.Add(20146111,’Nguyễn Văn A’)
print(A.name)
01/2009 11
2.2 Sử dụng class:
01/2009 12
2.2 Sử dụng class:
C = A
X = A == B
Y = A == C
01/2009 13
2.2 Sử dụng class:
2.2.2 So sánh đối tượng:
Lưu ý:
- Các đối tượng được khởi tạo khác nhau sẽ khác nhau cho dù
có cùng giá trị thuộc tính
01/2009 14
2.3 Constructor trong class:
Constructor:
Constructor (Phương thức khởi tạo): là một phương
thức đặc biệt trong class.
Luôn có tên là __init__()
Tham số đầu tiên của constructor luôn là self.
Trong 1 class, chỉ có 1 constructor:
01/2009 15
2.3 Constructor trong class:
Constructor:
class SV:
nganh_hoc = ‘CĐT’
khoa_hoc = ‘2020’
def __init__(self,a,b):
self.id = a
self.name = b
Lưu ý:
- Constructor dùng để tạo ra đối tượng và gán giá trị cho các
thuộc tính
01/2009 16
2.3 Constructor trong class:
Constructor:
class SV:
nganh_hoc = ‘CĐT’
khoa_hoc = 2020
def __init__(self,a,b):
self.id = a
self.name = b
01/2009 17
2.4 Instance attribute và Instance method:
2.4.1 Thuộc tính của đối tượng (instance attribute):
Thuộc tính của đối tượng chính là thuộc tính của riêng
từng đối tượng (khác với thuộc tính của class được dùng
chung cho tất cả đối tượng).
Trong python, thuộc tính của đối tượng chính là các biến
được tạo ra trong constructor.
01/2009 18
2.4 Instance attribute và Instance method:
2.4.1 Thuộc tính của đối tượng (instance attribute):
class SV:
nganh_hoc = ‘CĐT’
khoa_hoc = 2020
def __init__(self,a,b,diem):
self.id = a
self.name = b
self.score = diem
01/2009 19
2.4 Instance attribute và Instance method:
2.4.1 Thuộc tính của đối tượng (instance attribute):
Lưu ý:
- Trong VD trên, id và name là class attribute; còn score là
instance attribute
- Instance attribute chỉ có thể truy xuất qua đối tượng, còn
class attribute có thể được truy xuất trực tiếp mà không cần
đối tượng.
- Thông thường, class attribute là những thuộc tính dùng
chung (có giá trị giống nhau) của các đối tượng trong class
- Trong python, có thể tạo ra một instance attribute mới cho
một đối tượng đã có
01/2009 20
2.4 Instance attribute và Instance method:
2.4.1 Thuộc tính của đối tượng (instance attribute):
class SV:
nganh_hoc = ‘CĐT’
khoa_hoc = ‘2020’
def __init__(self,a,b,diem):
self.id = a
self.name = b
self.score = diem
01/2009 21
2.4 Instance attribute và Instance method:
2.4.2 Instance method:
Phương thức thông thường trong class còn được gọi là
instance method (để phân biệt với class method và static
method)
Instance method có thể sử dụng class attribute và
instance attribute
Instance method có thể làm thay đổi các attribute của đối
tượng
01/2009 22
2.4 Instance attribute và Instance method:
2.4.2 Instance method:
class SV:
nganh_hoc = ‘CĐT’
khoa_hoc = ‘2020’
def __init__(self,a,b,diem):
self.id = a
self.name = b
self.score = diem
def show(self):
print(‘Họ tên’,self.name)
print(‘Điểm’,self.diem)
01/2009 23
2.1 Class trong python:
2.1.3 Phương thức (method):
Lưu ý:
- Từ khóa self dùng để chỉ chính class đang làm việc, cho
phép tương tác với các giá trị có trong class
- Phương thức (method): luôn có tham số đầu tiên là self, các
tham số khác nếu có phải đứng sau tham số self
- Trong class không có giới hạn về số lượng phương thức
- Phương thức có thể trùng tên với hàm nằm ngoài class
nhưng không được trùng tên với các phương thức khác trong
class
01/2009 24
2.4 Instance attribute và Instance method:
2.4.3 Class method:
Phương thức của lớp là một phương thức chỉ sử dụng
được các thuộc tính của lớp (class attribute)
Class method không thể làm thay đổi các instance
attribute của đối tượng.
Trong class method, không sử dụng tham số self mà
thay vào đó sử dụng tham số cls
01/2009 25
2.4 Instance attribute và Instance method:
2.4.3 Class method:
class SV:
nganh_hoc = ‘CĐT’
khoa_hoc = 2020
def __init__(self,id,name):
self.id = id
self.name = name
def nhap_diem(self,qua_trinh,cuoi_ki):
self.midterm = qua_trinh
self.final = cuoi_ki
@classmethod
def sua_thong_tin(cls,nganh,khoa):
cls.nganh_hoc = nganh
cls.khoa_hoc = khoa
01/2009 26
2.4 Instance attribute và Instance method:
2.4.2 Instance method:
class SV:
id = 0
name = ‘’
def __init__(self,a,b,diem):
self.id = a
self.name = b
self.score = diem
def show(self):
print(‘Họ tên’,self.name)
print(‘Điểm’,self.diem)
01/2009 27
2.4 Instance attribute và Instance method:
2.4.4 Static method:
Phương thức tĩnh của lớp là một phương thức cho
phép được gọi ra mà không cần sử dụng đến đối tượng
Static method không thể làm thay đổi các instance
attribute của đối tượng.
Trong static method, không được sử dụng tham số self
cũng như tham số cls
01/2009 28
2.4 Instance attribute và Instance method:
2.4.3 Class method:
class SV:
nganh_hoc = ‘’
khoa_hoc = 2020
def __init__(self,id,name):
self.id = id
self.name = name
def nhap_diem(self,qua_trinh,cuoi_ki):
self.midterm = qua_trinh
self.final = cuoi_ki
@staticmethod
def show():
print(‘Ngành’:,SV.nganh_hoc)
print(‘Khóa’:,SV.khoa_hoc)
01/2009 29