Các lớp và đối tượng trong Python [Có ví dụ] – các lớp python với các hàm

Trong hướng dẫn này, bạn sẽ tìm hiểu về chức năng cốt lõi của các đối tượng và lớp Python. Bạn sẽ học lớp là gì, cách tạo và sử dụng lớp đó trong chương trình của bạn.

Bạn đang xem : lớp python với các hàm

Đối tượng và lớp Python

Python là một ngôn ngữ lập trình hướng đối tượng. Không giống như lập trình hướng thủ tục, trong đó trọng tâm chính là các hàm, lập trình hướng đối tượng nhấn mạnh vào các đối tượng.

Một đối tượng chỉ đơn giản là một tập hợp dữ liệu (biến) và phương thức (hàm) hoạt động trên những dữ liệu đó. Tương tự, một lớp là bản thiết kế cho đối tượng đó.

Chúng ta có thể coi lớp học như một bản phác thảo (nguyên mẫu) của một ngôi nhà. Nó chứa tất cả các chi tiết về sàn nhà, cửa ra vào, cửa sổ, v.v. Dựa trên những mô tả này, chúng tôi xây dựng ngôi nhà. Ngôi nhà là đối tượng.

Vì có thể tạo ra nhiều ngôi nhà từ bản thiết kế của một ngôi nhà, chúng ta có thể tạo nhiều đối tượng từ một lớp. Một đối tượng còn được gọi là một thể hiện của một lớp và quá trình tạo đối tượng này được gọi là khởi tạo .

Định nghĩa một Lớp trong Python

Giống như định nghĩa hàm bắt đầu bằng từ khóa def trong Python, định nghĩa lớp bắt đầu bằng từ khóa class .

Chuỗi đầu tiên bên trong lớp được gọi là docstring và có mô tả ngắn gọn về lớp. Mặc dù không bắt buộc nhưng điều này rất được khuyến khích.

Đây là một định nghĩa lớp đơn giản.

 lớp MyNewClass:
    '' 'Đây là một chuỗi tài liệu. Tôi đã tạo một lớp mới ''
    vượt qua  

Một lớp tạo một không gian tên cục bộ mới nơi tất cả các thuộc tính của nó được xác định. Các thuộc tính có thể là dữ liệu hoặc chức năng.

Ngoài ra còn có các thuộc tính đặc biệt trong đó bắt đầu bằng dấu gạch dưới kép __ . Ví dụ: __doc__ cung cấp cho chúng ta chuỗi tài liệu của lớp đó.

Ngay sau khi chúng tôi xác định một lớp, một đối tượng lớp mới được tạo với cùng tên. Đối tượng lớp này cho phép chúng ta truy cập các thuộc tính khác nhau cũng như khởi tạo các đối tượng mới của lớp đó.

 class Person:
    "Đây là một lớp người"
    tuổi = 10

    chào def (tự):
        print ('Xin chào')


# Đầu ra: 10
print (Person.age)

# Đầu ra: & lt; function Person.greet & gt;
in (Person.greet)

# Đầu ra: "Đây là lớp người"
print (Người .__ doc__)  

Đầu ra

10
& lt; function Person.greet theo số 0x7fc78c6e8160 & gt;
Đây là một hạng người 

Tạo một đối tượng bằng Python

Chúng tôi thấy rằng đối tượng lớp có thể được sử dụng để truy cập các thuộc tính khác nhau.

Xem Thêm  Upgrade From Version 4 - font awe

Nó cũng có thể được sử dụng để tạo các thể hiện đối tượng mới (tức thời) của lớp đó. Quy trình tạo đối tượng tương tự như lệnh gọi function .

 & gt; & gt; & gt; harry = Person ()  

Thao tác này sẽ tạo một cá thể đối tượng mới có tên là harry. Chúng ta có thể truy cập các thuộc tính của đối tượng bằng tiền tố tên đối tượng.

Các thuộc tính có thể là dữ liệu hoặc phương thức. Các phương thức của một đối tượng là các hàm tương ứng của lớp đó.

Điều này có nghĩa là, vì Person.greet là một đối tượng hàm (thuộc tính của lớp), Person.greet sẽ là một đối tượng phương thức.

 class Person:
    "Đây là một lớp người"
    tuổi = 10

    chào def (tự):
        print ('Xin chào')


# tạo một đối tượng mới của lớp Person
harry = Person ()

# Đầu ra: & lt; function Person.greet & gt;
in (Person.greet)

# Đầu ra: & lt; phương thức ràng buộc Person.greet của & lt; __ main __. Đối tượng Person & gt; & gt;
in (harry.greet)

# Gọi phương thức welcome () của đối tượng
# Đầu ra: Xin chào
harry.greet ()  

Đầu ra

& lt; function Person.greet theo số 0x7fd288e4e160 & gt;
& lt; phương thức liên kết Person.greet của & lt; __ main __. đối tượng Person tại 0x7fd288e9fa30 & gt; & gt;
Xin chào 

Bạn có thể đã nhận thấy tham số self trong định nghĩa hàm bên trong lớp nhưng chúng tôi đã gọi phương thức này đơn giản là harry.greet () mà không có bất kỳ đối số nào . Nó vẫn hoạt động.

Điều này là do, bất cứ khi nào một đối tượng gọi phương thức của nó, thì bản thân đối tượng đó sẽ được truyền làm đối số đầu tiên. Vì vậy, harry.greet () dịch thành Person.greet (harry) .

Nói chung, việc gọi một phương thức có danh sách n đối số tương đương với việc gọi hàm tương ứng với danh sách đối số được tạo bằng cách chèn đối tượng của phương thức trước đối số đầu tiên.

Vì những lý do này, đối số đầu tiên của hàm trong lớp phải là chính đối tượng. Đây được gọi là tự. Nó có thể được đặt tên khác nhưng chúng tôi khuyên bạn nên tuân theo quy ước.

Bây giờ bạn phải làm quen với đối tượng lớp, đối tượng cá thể, đối tượng hàm, đối tượng phương thức và sự khác biệt của chúng.

Các hàm tạo trong Python

Các hàm lớp bắt đầu bằng dấu gạch dưới kép __ được gọi là các hàm đặc biệt vì chúng có ý nghĩa đặc biệt.

Xem Thêm  Trang trí văn bản CSS - không có gạch dưới kiểu html

Một mối quan tâm cụ thể là hàm __init __ () . Hàm đặc biệt này được gọi bất cứ khi nào một đối tượng mới của lớp đó được khởi tạo.

Loại hàm này còn được gọi là hàm tạo trong Lập trình hướng đối tượng (OOP). Chúng tôi thường sử dụng nó để khởi tạo tất cả các biến.

 class ComplexNumber:
    def __init __ (self, r = 0, i = 0):
        self.real = r
        self.imag = tôi

    def get_data (self):
        print (f '{self.real} + {self.imag} j')


# Tạo một đối tượng ComplexNumber mới
num1 = Số phức (2, 3)

# Gọi phương thức get_data ()
# Đầu ra: 2 + 3j
num1.get_data ()

# Tạo một đối tượng ComplexNumber khác
# và tạo một thuộc tính mới 'attr'
num2 = Số phức (5)
num2.attr = 10

# Đầu ra: (5, 0, 10)
print ((num2.real, num2.imag, num2.attr))

# nhưng đối tượng c1 không có thuộc tính 'attr'
# AttributeError: Đối tượng 'ComplexNumber' không có thuộc tính 'attr'
print (num1.attr)  

Đầu ra

2 + 3j
(5, 0, 10)
Traceback (cuộc gọi gần đây nhất cuối cùng):
  Tệp "& lt; string & gt;", dòng 27, trong & lt; mô-đun & gt;
    print (num1.attr)
AttributeError: Đối tượng 'ComplexNumber' không có thuộc tính 'attr' 

Trong ví dụ trên, chúng tôi đã xác định một lớp mới để biểu diễn các số phức. Nó có hai hàm, __init __ () để khởi tạo các biến (mặc định là 0) và get_data () để hiển thị số chính xác.

Một điều thú vị cần lưu ý trong bước trên là các thuộc tính của một đối tượng có thể được tạo nhanh chóng. Chúng tôi đã tạo một thuộc tính mới cho đối tượng num2 và đọc nó. Nhưng điều này không tạo ra thuộc tính đó cho đối tượng num1.

Xóa các thuộc tính và đối tượng

Bất kỳ thuộc tính nào của một đối tượng đều có thể bị xóa bất cứ lúc nào bằng cách sử dụng câu lệnh del . Hãy thử các bước sau trên trình bao Python để xem kết quả.

 & gt; & gt; & gt; num1 = Số phức (2,3)
& gt; & gt; & gt; del num1.imag
& gt; & gt; & gt; num1.get_data ()
Traceback (cuộc gọi gần đây nhất cuối cùng):
...
AttributeError: Đối tượng 'Số phức' không có thuộc tính 'hình ảnh'

& gt; & gt; & gt; del ComplexNumber.get_data
& gt; & gt; & gt; num1.get_data ()
Traceback (cuộc gọi gần đây nhất cuối cùng):
...
AttributeError: Đối tượng 'ComplexNumber' không có thuộc tính 'get_data'  

Chúng tôi thậm chí có thể xóa chính đối tượng bằng cách sử dụng câu lệnh del.

 & gt; & gt; & gt; c1 = Số phức (1,3)
& gt; & gt; & gt; del c1
& gt; & gt; & gt; c1
Traceback (cuộc gọi gần đây nhất cuối cùng):
...
NameError: tên 'c1' không được xác định  

Trên thực tế, nó phức tạp hơn thế. Khi chúng ta thực hiện c1 = ComplexNumber (1,3) , một đối tượng thể hiện mới sẽ được tạo trong bộ nhớ và tên c1 liên kết với nó.

Xem Thêm  Cách căn giữa một bảng trong HTML - dữ liệu bảng trung tâm html

Trên lệnh del c1 , liên kết này bị xóa và tên c1 bị xóa khỏi vùng tên tương ứng. Tuy nhiên, đối tượng vẫn tiếp tục tồn tại trong bộ nhớ và nếu không có tên nào khác liên kết với nó, nó sẽ tự động bị hủy sau đó.

Việc hủy tự động các đối tượng không được tham chiếu này trong Python còn được gọi là thu gom rác.

Xóa đối tượng trong Python sẽ xóa ràng buộc tên


Xem thêm những thông tin liên quan đến chủ đề các lớp python với các hàm

Classes and Objects with Python – Part 1 (Python Tutorial #9)

  • Tác giả: CS Dojo
  • Ngày đăng: 2018-03-27
  • Đánh giá: 4 ⭐ ( 6594 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Object oriented programming (OOP) in Python – let’s go!

    Introduction to Classes and Objects: https://youtu.be/8yjkWGRlUmY
    Download the sample file here: https://www.csdojo.io/class
    You can find this entire series in a playlist here: https://goo.gl/eVauVX

    And keep in touch on Facebook: https://www.facebook.com/entercsdojo

Hàm trong Python

  • Tác giả: o2.edu.vn
  • Đánh giá: 5 ⭐ ( 1650 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Để khai báo một hàm trong Python chúng ta sử dụng từ khóa def với cú pháp:

Lớp trong Python

  • Tác giả: viblo.asia
  • Đánh giá: 3 ⭐ ( 6622 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Hôm ni, mình học tiếp về bạn “Lớp(class) trong python”, bài blog tiếp theo nằm trong series “Khám phá Đại Bản Doanh Python”(nội dung trong bài series này từ chủ yếu mình lấy từ python.org rồi viết lại…

Hàm trong Python – Bỏ túi kiến thức về hàm trong Python

  • Tác giả: t3h.com.vn
  • Đánh giá: 4 ⭐ ( 3338 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Các hàm trong Python giúp chia nhỏ chương trình của lập trình viên thành các phần nhỏ hơn theo module. Khi các dự án,….

CÁC HÀM, LỚP VÀ CÁC MÔ-ĐUN TRONG PYTHON –

  • Tác giả: vnpro.vn
  • Đánh giá: 4 ⭐ ( 6073 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Python: Các hàm toán học trong Python

  • Tác giả: www.v1study.com
  • Đánh giá: 5 ⭐ ( 2794 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Trong Python, một số phép toán toán học có thể được thực hiện một cách dễ dàng bằng cách import một mô-đun có tên là math để xác định các hàm khác nhau g

Các hàm tạo Python và __init__

  • Tác giả: qastack.vn
  • Đánh giá: 4 ⭐ ( 7002 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: [Tìm thấy giải pháp!] Không có tính năng nạp chồng hàm trong Python, có nghĩa là bạn không thể có…

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình