Phiên bản lớp sao chép python

Python là ngôn ngữ lập trình hướng thủ tục [Hướng thủ tục], đồng thời nó cũng là ngôn ngữ lập trình hướng đối tượng [Hướng đối tượng]

Hướng thủ tục [Hướng thủ tục]

Hướng thủ tục biểu hiện trong công việc sử dụng các hàm trong Python. Bạn có thể định nghĩa các hàm và các hàm này có thể sử dụng ở các mô-đun khác trong chương trình Python

Hướng đối tượng [Object Oriented]

Hướng đối tượng trong Python biểu thị việc sử dụng lớp [lớp], bạn có thể định nghĩa một lớp, lớp là một nguyên mẫu [nguyên mẫu] để tạo ra các đối tượng [đối tượng/thể hiện]

2- Tạo lớp trong Python

Cú pháp tạo một lớp

** cú pháp lớp **


class ClassName:
   'Mô tả ngắn về class [Không bắt buộc]'
   # Code ...
  • Để định nghĩa một lớp bạn sử dụng từ khóa lớp, tiếp theo đó là tên của lớp và dấu hai chấm [. ]. Dòng đầu tiên trong thân của Lớp là chuỗi [chuỗi] mô tả rút gọn về Lớp này [Không bắt buộc], bạn có thể truy cập vào chuỗi này thông qua Tên lớp. __doc__
  • Trong thân của lớp bạn có thể khai báo các thuộc tính, phương thức [method] và các phương thức khởi tạo [Constructor]

Thuộc tính [Attribute]

Thuộc tính là một thành viên thành viên của lớp. Không hạn chế hình chữ nhật có hai thuộc tính chiều rộng và chiều cao [Chiều rộng và chiều cao]

Phương thức [Method]

  • Phương thức của lớp nó tương tự như một hàm thông thường, nhưng nó là một hàm của lớp, để sử dụng nó bạn cần phải gọi thông qua các đối tượng
  • Tham số đầu tiên của phương thức luôn là chính nó [Một từ khóa chỉ lớp chính đó]

Phương thức khởi tạo [Constructor]

  • Phương thức khởi tạo [Constructor] là một phương thức đặc biệt của lớp [lớp], nó luôn có tên là __init__
  • Tham số đầu tiên của hàm tạo luôn là chính nó [Một từ khóa chỉ lớp chính đó]
  • Constructor được sử dụng để tạo ra một đối tượng
  • Constructor gán các giá trị từ tham số vào các thuộc tính của đối tượng sẽ được tạo ra
  • Bạn chỉ có thể định nghĩa nhiều nhất một phương thức khởi tạo [hàm tạo] trong lớp
  • Nếu lớp không được định nghĩa hàm tạo, Python mặc định coi rằng nó thừa kết nối từ hàm tạo của lớp cha

hình chữ nhật. py


# Một lớp mô phỏng một hình chữ nhật.
class Rectangle :
    'This is Rectangle class' 
   
    # Một phương thức được sử dụng để tạo đối tượng [Contructor].
    def __init__[self, width, height]:
        
        self.width= width
        self.height = height
   
    
    
    def getWidth[self]:        
        return self.width
    
    
    def getHeight[self]:        
        return self.height

    # Phương thức tính diện tích.
    def getArea[self]:
        
        return self.width * self.height

Tạo đối tượng từ Rectangle Layer

kiểm traHình chữ nhật. py


from rectangle import Rectangle

# Tạo 2 đối tượng: r1 & r2
r1 = Rectangle[10,5]

r2 = Rectangle[20,11]

print ["r1.width = ", r1.width]
print ["r1.height = ", r1.height]
print ["r1.getWidth[] = ", r1.getWidth[]]
print ["r1.getArea[] = ", r1.getArea[]]

print ["-----------------"]

print ["r2.width = ", r2.width]
print ["r2.height = ", r2.height]
print ["r2.getWidth[] = ", r2.getWidth[]]
print ["r2.getArea[] = ", r2.getArea[]]

Điều gì gây ra khi bạn tạo đối tượng từ một lớp?

Khi bạn tạo một đối tượng của lớp Rectangle, phương thức khởi tạo [hàm tạo] của lớp đó sẽ được gọi để tạo một đối tượng và các thuộc tính của đối tượng sẽ được gán giá trị từ tham số. Nó giống với hình minh họa dưới đây

3- Tham số có mặc định trong Constructor

Khác với các ngôn ngữ khác, lớp trong Python chỉ có nhiều nhất một phương thức khởi tạo [Constructor]. Tuy nhiên Python cho phép tham số có giá trị mặc định

Chú thích. Tất cả các tham số bắt buộc [các tham số bắt buộc] phải đặt trước tất cả các tham số có giá trị mặc định

người. py


class Person :
  
    # Tham số age và gender có giá trị mặc định.
    def __init__ [self, name, age = 1, gender = "Male" ]:
        
        self.name = name
        self.age = age 
        self.gender= gender
        
    
    def showInfo[self]:
        
        print ["Name: ", self.name]
        print ["Age: ", self.age]
        print ["Gender: ", self.gender]

Ví dụ sử dụng

người kiểm tra. py


from person import Person

# Tạo một đối tượng Person.
aimee = Person["Aimee", 21, "Female"]


aimee.showInfo[]

print [" --------------- "]

# age, gender mặc định.
alice = Person[ "Alice" ]

alice.showInfo[]

print [" --------------- "]

# gender mặc định.
tran = Person["Tran", 37]

tran.showInfo[]

4- So sánh các đối tượng

Trong Python, khi bạn tạo một đối tượng thông qua phương thức khởi tạo [Constructor], sẽ có một khả năng thực sự được tạo ra nằm trên bộ nhớ, nó có một địa chỉ xác định.

Phép toán gán đối tượng AA bởi một đối tượng BB không được tạo ra để thực hiện bổ sung trên bộ nhớ, nó chỉ là con trỏ địa chỉ của AA tới địa chỉ của BB

Toán tử == dùng để so sánh địa chỉ 2 đối tượng trỏ đến, nó trả về True nếu cả 2 đối tượng cùng trỏ tới cùng một địa chỉ trên bộ nhớ. Toán tử. = cũng sử dụng để so sánh 2 địa chỉ của 2 đối tượng trỏ đến, nó trả về True nếu 2 đối tượng trỏ tới 2 địa chỉ khác nhau

đối tượng so sánh. py


from rectangle import Rectangle


r1 = Rectangle[20, 10]

r2 = Rectangle[20 , 10]

r3 = r1

# So sánh địa chỉ của r1 và r2
test1 = r1 == r2 # --> False

# So sánh địa chỉ của r1 và r3
test2 = r1 == r3 # --> True


print ["r1 == r2 ? ", test1]

print ["r1 == r3 ? ", test2]


print [" -------------- "]

print ["r1 != r2 ? ", r1 != r2]

print ["r1 != r3 ? ", r1 != r3]

5- Thuộc tính [Attribute]

Trong Python có 2 khái niệm khá giống nhau, bạn cần phải phân biệt nó

  1. Thuộc tính [Attribute]
  2. Biến lớp

Để đơn giản, hãy phân tích ví dụ dưới đây

người chơi. py


class Player:
    
    # Biến của lớp. 
    minAge  = 18
    
    maxAge = 50
    
    
    def __init__[self, name, age]:
        
        self.name = name
        self.age = age

Thuộc tính [Attribute]

Các đối tượng được tạo ra từ một lớp, chúng sẽ nằm ở các địa chỉ khác nhau trên bộ nhớ [bộ nhớ], và thuộc tính "cùng tên" của chúng cũng có các địa chỉ khác nhau trên bộ nhớ. Như hình minh họa dưới đây

testAttributePlayer. py


from player import Player 


player1 = Player["Tom", 20]

player2 = Player["Jerry", 20]

print ["player1.name = ", player1.name]
print ["player1.age = ", player1.age]


print ["player2.name = ", player2.name]
print ["player2.age = ", player2.age]

print [" ------------ "]

print ["Assign new value to player1.age = 21 "]

# Gán giá trị mới cho thuộc tính [attribute] age của player1.
player1.age = 21 

print ["player1.name = ", player1.name]
print ["player1.age = ", player1.age]

print ["player2.name = ", player2.name]
print ["player2.age = ", player2.age]

Python cho phép tạo một thuộc tính mới cho một đối tượng có trước. Ví dụ đối tượng player1 và thuộc tính mới có tên địa chỉ

testNewAttributePlayer. py

________số 8

6- Các hàm truy cập vào thuộc tính

Thông thường bạn truy cập vào thuộc tính của một đối tượng thông qua toán tử "dấu chấm" [Ví dụ player1. Tên]. Tuy nhiên, Python cho phép bạn truy cập chúng thông qua hàm [hàm]

HàmMô tảgetattr[obj, name[, default]]Trả về giá trị của thuộc tính, hoặc trả về giá trị mặc định nếu đối tượng không có thuộc tính này. hasattr[obj,name]Kiểm tra xem đối tượng này có thuộc tính cho bởi tham số 'name' hay không. setattr[obj,name,value]Đặt giá trị vào thuộc tính. Nếu thuộc tính không tồn tại, thì nó sẽ được tạo ra. delattr[obj, name]Xóa thuộc tính

chức năng testAtt. py


from player import Player 

player1 = Player["Tom", 20]

# getattr[obj, name[, default]]
print ["getattr[player1,'name'] = " , getattr[player1,"name"] ]


print ["setattr[player1,'age', 21]: "]

# setattr[obj,name,value] 
setattr[player1,"age", 21]


print ["player1.age = ", player1.age]

# Kiểm tra player1 có thuộc tính [attribute] address hay không? 
hasAddress =  hasattr[player1, "address"]

print ["hasattr[player1, 'address'] ? ", hasAddress]

# Tạo thuộc tính 'address' cho đối tượng 'player1'.
print ["Create attribute 'address' for object 'player1'"]
setattr[player1, 'address', "USA"]

print ["player1.address = ", player1.address]

# Xóa thuộc tính 'address'.
delattr[player1, "address"]

7- Các thuộc tính có sẵn của lớp

Các lớp của Python đều là hậu duệ của đối tượng lớp. Và vì vậy nó thừa kế các thuộc tính sau

Thuộc tínhMô tả__dict__Đưa ra thông tin về lớp này một cách ngắn gọn, dễ hiểu, giống như một bộ từ điển [Dictionary]__doc__Trả về chuỗi mô tả về lớp, hoặc trả về Không có gì nếu nó không được định nghĩa_lớp__Trả về một đối tượng, chứa thông tin . __module__Trả về tên mô-đun của lớp, hoặc trả về "__main__" nếu lớp đó được định nghĩa trong mô-đun đang chạy

testBuildInAttributes. py


# Một lớp mô phỏng một hình chữ nhật.
class Rectangle :
    'This is Rectangle class' 
   
    # Một phương thức được sử dụng để tạo đối tượng [Contructor].
    def __init__[self, width, height]:
        
        self.width= width
        self.height = height
   
    
    
    def getWidth[self]:        
        return self.width
    
    
    def getHeight[self]:        
        return self.height

    # Phương thức tính diện tích.
    def getArea[self]:
        
        return self.width * self.height
0

8- Biến lớp

Trong Python khái niệm "Biến của lớp [Biến của lớp]" tương đương với khái niệm trường tĩnh [Trường tĩnh] của các ngôn ngữ khác như Java, CSharp. Biến lớp có thể truy cập được thông qua tên lớp hoặc thông qua đối tượng.
 

Lời khuyên là bạn nên truy cập "biến số của lớp" thông qua tên lớp thay vì truy cập thông tin qua đối tượng. Điều này giúp tránh nhầm lẫn giữa "biến số của lớp" và thuộc tính

Mỗi biến của lớp, có một địa chỉ nằm trên bộ nhớ [memory]. Và chia sẻ cho mọi đối tượng của lớp.
 

testBiếnPlayer. py


# Một lớp mô phỏng một hình chữ nhật.
class Rectangle :
    'This is Rectangle class' 
   
    # Một phương thức được sử dụng để tạo đối tượng [Contructor].
    def __init__[self, width, height]:
        
        self.width= width
        self.height = height
   
    
    
    def getWidth[self]:        
        return self.width
    
    
    def getHeight[self]:        
        return self.height

    # Phương thức tính diện tích.
    def getArea[self]:
        
        return self.width * self.height
1

9- Listing list of members of layer or objects

Python cung cấp cho bạn hàm dir, hàm này liệt kê ra danh sách các phương thức, thuộc tính, biến của lớp hoặc của đối tượng.
 

testDirFunction. py


# Một lớp mô phỏng một hình chữ nhật.
class Rectangle :
    'This is Rectangle class' 
   
    # Một phương thức được sử dụng để tạo đối tượng [Contructor].
    def __init__[self, width, height]:
        
        self.width= width
        self.height = height
   
    
    
    def getWidth[self]:        
        return self.width
    
    
    def getHeight[self]:        
        return self.height

    # Phương thức tính diện tích.
    def getArea[self]:
        
        return self.width * self.height
2

Run ví dụ

['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '

['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '

10- Hủy Đối Tượng

  • LÀM

You can you quan tâm

Đây là các từ khóa học trực tuyến bên ngoài trang web o7planning mà chúng tôi giới thiệu, nó có thể bao gồm các từ khóa học miễn phí hoặc giảm giá

Chủ Đề