Lớp học trong ví dụ thời gian thực Python là gì?

Các ví dụ trên là các lớp và đối tượng ở dạng đơn giản nhất và không thực sự hữu ích trong các ứng dụng thực tế

Để hiểu ý nghĩa của các lớp, chúng ta phải hiểu hàm __init__() tích hợp sẵn

Tất cả các lớp đều có một hàm gọi là __init__(), hàm này luôn được thực thi khi lớp bắt đầu

Sử dụng hàm __init__() để gán giá trị cho thuộc tính đối tượng hoặc các thao tác khác cần thực hiện khi đối tượng được tạo

Thí dụ

Tạo một lớp tên là Person, sử dụng hàm __init__() để gán giá trị cho tên và tuổi

lớp người
def __init__(bản thân, tên, tuổi)
bản thân. tên = tên
bản thân. tuổi = tuổi

p1 = Người("John", 36)

in(p1. tên)
in(p1. tuổi)

Tự mình thử »

Ghi chú. Hàm __init__() được gọi tự động mỗi khi lớp được sử dụng để tạo một đối tượng mới


Học cách lọc dữ liệu bằng Python như một nhà phân tích dữ liệu

Lớp học trong ví dụ thời gian thực Python là gì?

Thử tham gia các buổi đào tạo thực hành với hướng dẫn từng bước từ chuyên gia. Hãy thử dự án có hướng dẫn được thực hiện với sự cộng tác của Coursera ngay bây giờ

Get started


Hàm __str__()

Hàm __str__() kiểm soát những gì sẽ được trả về khi đối tượng lớp được biểu diễn dưới dạng chuỗi

Nếu hàm __str__() không được đặt, thì biểu diễn chuỗi của đối tượng được trả về

Thí dụ

Biểu diễn chuỗi của một đối tượng KHÔNG CÓ hàm __str__()

lớp người
def __init__(bản thân, tên, tuổi)
bản thân. tên = tên
bản thân. tuổi = tuổi

p1 = Người("John", 36)

bản in(p1)

Tự mình thử »

Thí dụ

Biểu diễn chuỗi của một đối tượng VỚI hàm __str__()

lớp người
def __init__(bản thân, tên, tuổi)
bản thân. tên = tên
bản thân. tuổi = tuổi

def __str__(bản thân)
trả về f"{tự. tên}({bản thân. tuổi})"

p1 = Người("John", 36)

bản in(p1)

Tự mình thử »


phương pháp đối tượng

Các đối tượng cũng có thể chứa các phương thức. Các phương thức trong các đối tượng là các chức năng thuộc về đối tượng

Hãy để chúng tôi tạo một phương thức trong lớp Person

Thí dụ

Chèn một hàm in lời chào và thực hiện nó trên đối tượng p1

lớp người
def __init__(bản thân, tên, tuổi)
bản thân. tên = tên
bản thân. tuổi = tuổi

def myfunc(bản thân)
print("Xin chào, tên tôi là " + self. tên)

p1 = Người("John", 36)
p1. myfunc()

Tự mình thử »

Ghi chú. Tham số self là tham chiếu đến phiên bản hiện tại của lớp và được sử dụng để truy cập các biến thuộc về lớp


Tham số bản thân

Tham số self là tham chiếu đến phiên bản hiện tại của lớp và được sử dụng để truy cập các biến thuộc về lớp

Nó không nhất thiết phải được đặt tên là self , bạn có thể gọi nó là gì tùy thích, nhưng nó phải là tham số đầu tiên của bất kỳ chức năng nào trong lớp

Thí dụ

Sử dụng các từ mysillyobject và abc thay vì self

lớp người
def __init__(mysillyobject, tên, tuổi)
đối tượng của tôi. tên = tên
đối tượng của tôi. tuổi = tuổi

xác định myfunc (abc)
print("Xin chào, tên tôi là " + abc. Tên)

p1 = Người("John", 36)
p1. myfunc()

Tự mình thử »


Sửa đổi thuộc tính đối tượng

Bạn có thể sửa đổi các thuộc tính trên các đối tượng như thế này


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

Bạn có thể xóa các thuộc tính trên các đối tượng bằng cách sử dụng từ khóa del


Xóa đối tượng

Bạn có thể xóa các đối tượng bằng cách sử dụng từ khóa del


Tuyên bố vượt qua

Định nghĩa class không thể để trống, nhưng nếu vì lý do nào đó bạn có định nghĩa class không có nội dung, hãy đặt câu lệnh pass để tránh mắc lỗi

Trong ví dụ trên, ô tô là một

Company.name

Output
'XYZ Bank'

Company.turnover

Output
5000

Company.no_of_employees

Output
100

Company().productivity()

Output
10.0
3. Các chức năng được gọi là
Company.name

Output
'XYZ Bank'

Company.turnover

Output
5000

Company.no_of_employees

Output
100

Company().productivity()

Output
10.0
4 trong thế giới OOP. Đặc điểm là
Company.name

Output
'XYZ Bank'

Company.turnover

Output
5000

Company.no_of_employees

Output
100

Company().productivity()

Output
10.0
5. Về mặt kỹ thuật, các thuộc tính là các biến hoặc giá trị liên quan đến trạng thái của đối tượng trong khi các phương thức là các hàm có ảnh hưởng đến các thuộc tính của đối tượng

Trong Python, mọi thứ đều là đối tượng. Chuỗi, Số nguyên, Float, danh sách, từ điển, hàm, mô-đun, v.v. đều là các đối tượng

Các nhà khoa học dữ liệu có sử dụng lập trình hướng đối tượng không?

Đó là một trong những câu hỏi phổ biến nhất mà các nhà khoa học dữ liệu có trước khi học OOP. Khi nói đến thao tác dữ liệu và học máy bằng Python, thông thường nên nghiên cứu các thư viện pandas, numpy, matplotlib, scikit-learn. Các thư viện này được viết bởi các nhà phát triển python có kinh nghiệm để tự động hóa hoặc đơn giản hóa hầu hết các tác vụ liên quan đến khoa học dữ liệu. Tất cả các thư viện này phụ thuộc vào OOP và các khái niệm của nó. Ví dụ: bạn đang xây dựng mô hình hồi quy bằng thư viện scikit-learn. Trước tiên, bạn phải khai báo mô hình của mình dưới dạng một đối tượng và sau đó bạn sử dụng phương thức phù hợp. Nếu không biết các nguyên tắc cơ bản của OOP, bạn sẽ không thể hiểu tại sao bạn viết mã theo cách này

Trong python chủ yếu có 3 phong cách lập trình đó là Lập trình hướng đối tượng, Lập trình hàm và Lập trình thủ tục. Nói một cách đơn giản, có 3 cách khác nhau để giải quyết vấn đề trong Python. Lập trình chức năng phổ biến nhất trong số các nhà khoa học dữ liệu vì nó có lợi thế về hiệu suất. OOP rất hữu ích khi bạn làm việc với các cơ sở mã lớn và khả năng bảo trì mã là rất quan trọng

Phần kết luận. Thật tốt khi tìm hiểu các nguyên tắc cơ bản của OOP để bạn hiểu điều gì đang diễn ra đằng sau các thư viện bạn sử dụng. Nếu bạn muốn trở thành một nhà phát triển python giỏi và muốn xây dựng thư viện Python, bạn cần học OOP (Phải. ). Đồng thời, có nhiều nhà khoa học dữ liệu không biết về các khái niệm OOP và vẫn xuất sắc trong công việc của họ

Khái niệm cơ bản. OOP trong Python

Trong phần này, chúng ta sẽ xem chi tiết các khái niệm liên quan đến OOP trong Python

đối tượng và lớp

Lớp là kiến ​​trúc của đối tượng. Nó là một mô tả thích hợp về các thuộc tính và phương thức của một lớp. Ví dụ, thiết kế của một chiếc xe cùng loại là một lớp. Bạn có thể tạo nhiều đối tượng từ một lớp. Giống như bạn có thể tạo ra nhiều ô tô cùng loại từ một thiết kế ô tô

Lớp học trong ví dụ thời gian thực Python là gì?


Lớp học trong ví dụ thời gian thực Python là gì?

Có nhiều ví dụ thực tế về các lớp như được giải thích bên dưới -

  • Công thức của Omelette là một lớp học. Omelette là một đối tượng
  • Chủ tài khoản ngân hàng là một lớp. Các thuộc tính là Tên, Họ, Ngày sinh, Nghề nghiệp, Địa chỉ, v.v. Các phương thức có thể là "Thay đổi địa chỉ", "Thay đổi nghề nghiệp", "Thay đổi họ" v.v. “Thay đổi họ” được áp dụng chung cho phụ nữ khi họ thay đổi họ sau khi kết hôn
  • Con chó là một lớp học. Các thuộc tính là Giống, Số chân, Kích thước, Tuổi, Màu sắc, v.v. Các phương pháp có thể là Ăn, Ngủ, Ngồi, Sủa, Chạy, v.v.

Trong python, chúng ta có thể tạo một lớp bằng từ khóa

Company.name

Output
'XYZ Bank'

Company.turnover

Output
5000

Company.no_of_employees

Output
100

Company().productivity()

Output
10.0
6. Phương thức của lớp có thể được định nghĩa bằng từ khóa
Company.name

Output
'XYZ Bank'

Company.turnover

Output
5000

Company.no_of_employees

Output
100

Company().productivity()

Output
10.0
7. Nó tương tự như một hàm bình thường nhưng nó được định nghĩa trong một lớp và là một hàm của lớp. Tham số đầu tiên trong định nghĩa của một phương thức luôn là
Company.name

Output
'XYZ Bank'

Company.turnover

Output
5000

Company.no_of_employees

Output
100

Company().productivity()

Output
10.0
8 và phương thức được gọi mà không có tham số
Company.name

Output
'XYZ Bank'

Company.turnover

Output
5000

Company.no_of_employees

Output
100

Company().productivity()

Output
10.0
8

ví dụ 1. Tạo lớp xe

  • Company.name
    
    Output
    'XYZ Bank'
    
    Company.turnover
    
    Output
    5000
    
    Company.no_of_employees
    
    Output
    100
    
    Company().productivity()
    
    Output
    10.0
    
    6. xe hơi
  • class person:
            def __init__(self,firstname,lastname):
                self.first = firstname
                self.last = lastname
    
    myname = person("Deepanshu","Bhalla")
    print(myname.last)
    
    1. năm, mpg và tốc độ
  • Company.name
    
    Output
    'XYZ Bank'
    
    Company.turnover
    
    Output
    5000
    
    Company.no_of_employees
    
    Output
    100
    
    Company().productivity()
    
    Output
    10.0
    
    4. tăng tốc và phanh
  • Company.name
    
    Output
    'XYZ Bank'
    
    Company.turnover
    
    Output
    5000
    
    Company.no_of_employees
    
    Output
    100
    
    Company().productivity()
    
    Output
    10.0
    
    3. xe1
class car:
    
    # attributes
        year = 2016     # car model's year
        mpg =  20       # mileage
        speed = 100     # current speed
        
    # methods
        def accelerate(self):
            return car.speed + 20

        def brake(self):
            return car.speed - 50
car1=car()

car1.accelerate()
120

car1.brake()
50

car1.year
2016

car1.mpg
20

car1.speed
100
Để gửi các phương thức, chúng ta cần sử dụng dấu ngoặc tròn

ví dụ 2. Tạo lớp công ty

Trong ví dụ dưới đây, chúng tôi đang tạo một lớp gọi là công ty. Ở đây các thuộc tính là tên, doanh thu, doanh thu và số lượng nhân viên làm việc trong công ty. Phương pháp là doanh thu được tạo ra trên mỗi nhân viên (hãy gọi nó là năng suất cho mục đích trình diễn).
# Creates class Company
class Company:
    
    # attributes
    name = "XYZ Bank"
    turnover = 5000
    revenue = 1000
    no_of_employees = 100
    
    # method
    def productivity(self):
        return Company.revenue/Company.no_of_employees

Các thuộc tính được xác định bên ngoài phương thức có thể được trích xuất mà không cần tạo đối tượng

Company.name

Output
'XYZ Bank'

Company.turnover

Output
5000

Company.no_of_employees

Output
100

Company().productivity()

Output
10.0

Người xây dựng

Constructor là một phương thức đặc biệt. Bạn có thể coi đây là một hàm khởi tạo hoặc kích hoạt các thuộc tính hoặc thuộc tính của lớp cho một đối tượng. Sử dụng từ khóa
class person:
        def __init__(self,firstname,lastname):
            self.first = firstname
            self.last = lastname

myname = person("Deepanshu","Bhalla")
print(myname.last)
4 để tạo phương thức cho hàm tạo. Trong phần trên, chúng ta đã thảo luận về một ví dụ về xe hơi như một đối tượng. Bạn có thể coi hàm tạo là toàn bộ chuỗi hành động cần thiết để nhà máy xây dựng một đối tượng ô tô ngoài mẫu thiết kế của lớp.
Company.name

Output
'XYZ Bank'

Company.turnover

Output
5000

Company.no_of_employees

Output
100

Company().productivity()

Output
10.0
8 đại diện cho đối tượng kế thừa các thuộc tính đó

Đối tượng là thể hiện của một lớp. Các từ 'ví dụ' và 'đối tượng' được sử dụng thay thế cho nhau. Quá trình tạo một đối tượng của một lớp được gọi là

class person:
        def __init__(self,firstname,lastname):
            self.first = firstname
            self.last = lastname

myname = person("Deepanshu","Bhalla")
print(myname.last)
6

Trong ví dụ sau, chúng tôi đang yêu cầu người dùng nhập các giá trị.

class person:
        def __init__(self,firstname,lastname):
            self.first = firstname
            self.last = lastname

myname = person("Deepanshu","Bhalla")
print(myname.last)
4 được gọi khi một đối tượng của lớp được xây dựng

________số 8_______
Chúng tôi đã tạo đối tượng
class person:
        def __init__(self,firstname,lastname):
            self.first = firstname
            self.last = lastname

myname = person("Deepanshu","Bhalla")
print(myname.last)
8 của lớp người.
When you create a new object >>> __init__ method is called  >>> Behavior within the__init__ method executes

Hãy lấy một ví dụ khác. Ở đây, chương trình bên dưới trả về đầu ra dựa trên phương thức được định nghĩa trong lớp

class MyCompany:
        
    # methods
    def __init__(self, compname, revenue, employeesize):
        self.name = compname
        self.revenue = revenue
        self.no_of_employees = employeesize

    def productivity(self):
        return self.revenue/self.no_of_employees

MyCompany('XYZ Bank', 1000,100).productivity()

Output
10.0

MyCompany('ABC Bank', 5000,200).productivity()

Output
25.0

Cách khác để gọi phương thức lớp

Bank = MyCompany('ABC Bank', 5000,200)
MyCompany.productivity(Bank)

Biến

Thuộc tính của lớp còn được gọi là biến. Có hai loại biến - một loại được khai báo bên trong một lớp nhưng bên ngoài các phương thức của lớp và loại kia được khai báo bên trong
class person:
        def __init__(self,firstname,lastname):
            self.first = firstname
            self.last = lastname

myname = person("Deepanshu","Bhalla")
print(myname.last)
4

Khi bạn sử dụng phương thức __int__, bạn chỉ có thể truy cập các biến sau khi tạo một đối tượng. Các biến này được gọi là

When you create a new object >>> __init__ method is called  >>> Behavior within the__init__ method executes
0 hoặc biến cục bộ. Một cái được định nghĩa bên ngoài các phương thức được gọi là
When you create a new object >>> __init__ method is called  >>> Behavior within the__init__ method executes
1 hoặc biến toàn cục. Bạn có thể truy cập các biến này ở bất cứ đâu trong lớp. Xem sự khác biệt trong ví dụ dưới đây

class MyCompany:
    #Class Variable
    growth = 0.1
            
    def __init__(self, compname, revenue, employeesize):
        #Instance Variables
        self.name = compname
        self.revenue = revenue
        self.no_of_employees = employeesize

MyCompany.growth
0.1

Làm cách nào để nhận biến doanh thu từ lớp MyCompany?

Sai đường ______28_______AttributeError. loại đối tượng 'Công ty của tôi' không có thuộc tính 'doanh thu'

Cách đúng

car1=car()

car1.accelerate()
120

car1.brake()
50

car1.year
2016

car1.mpg
20

car1.speed
100
050000

When you create a new object >>> __init__ method is called  >>> Behavior within the__init__ method executes
2 trả về lỗi vì không thể truy cập vì đối tượng chưa được tạo

phương pháp

Trong python có 3 loại phương thức là Instance, Class và Static
  • When you create a new object >>> __init__ method is called  >>> Behavior within the__init__ method executes
    3 lấy
    Company.name
    
    Output
    'XYZ Bank'
    
    Company.turnover
    
    Output
    5000
    
    Company.no_of_employees
    
    Output
    100
    
    Company().productivity()
    
    Output
    10.0
    
    8 làm đối số đầu tiên. Chúng còn được gọi là Đối tượng hoặc phương thức thông thường. Đó là phương pháp tương tự mà chúng ta đã học cho đến nay trong các phần trước
  • When you create a new object >>> __init__ method is called  >>> Behavior within the__init__ method executes
    5 lấy
    When you create a new object >>> __init__ method is called  >>> Behavior within the__init__ method executes
    6 làm đối số đầu tiên. cls đề cập đến lớp. Để truy cập một biến lớp trong một phương thức, chúng ta sử dụng trình trang trí
    When you create a new object >>> __init__ method is called  >>> Behavior within the__init__ method executes
    7 và truyền lớp cho phương thức
  • When you create a new object >>> __init__ method is called  >>> Behavior within the__init__ method executes
    8không lấy bất cứ điều gì làm đối số đầu tiên. Nó có những cách sử dụng hạn chế được giải thích trong phần sau của bài viết này

Các phương thức Instance và class khác nhau như thế nào?

Phương thức sơ thẩm có thể truy cập các thuộc tính duy nhất cho một đối tượng hoặc thể hiện. Trong khi đó, phương thức Lớp được sử dụng khi bạn muốn truy cập thuộc tính của một lớp chứ không phải thuộc tính của một thể hiện cụ thể của lớp đó. Sự khác biệt khác về phong cách viết là phương thức Instance lấy self làm tham số đầu tiên trong khi phương thức Class lấy cls làm tham số đầu tiên

Trong ví dụ bên dưới, chúng tôi đang tạo lớp cho

When you create a new object >>> __init__ method is called  >>> Behavior within the__init__ method executes
9. Cả Cab và taxi đều có nghĩa giống nhau. Các thuộc tính hoặc thuộc tính của taxi là tên tài xế, số km taxi đã chạy, điểm đón và trả khách, giá cước taxi và số hành khách lên xe

Ở đây chúng tôi đang tạo ra 3 phương pháp.

class MyCompany:
        
    # methods
    def __init__(self, compname, revenue, employeesize):
        self.name = compname
        self.revenue = revenue
        self.no_of_employees = employeesize

    def productivity(self):
        return self.revenue/self.no_of_employees

MyCompany('XYZ Bank', 1000,100).productivity()

Output
10.0

MyCompany('ABC Bank', 5000,200).productivity()

Output
25.0

0,
class MyCompany:
        
    # methods
    def __init__(self, compname, revenue, employeesize):
        self.name = compname
        self.revenue = revenue
        self.no_of_employees = employeesize

    def productivity(self):
        return self.revenue/self.no_of_employees

MyCompany('XYZ Bank', 1000,100).productivity()

Output
10.0

MyCompany('ABC Bank', 5000,200).productivity()

Output
25.0

1,
class MyCompany:
        
    # methods
    def __init__(self, compname, revenue, employeesize):
        self.name = compname
        self.revenue = revenue
        self.no_of_employees = employeesize

    def productivity(self):
        return self.revenue/self.no_of_employees

MyCompany('XYZ Bank', 1000,100).productivity()

Output
10.0

MyCompany('ABC Bank', 5000,200).productivity()

Output
25.0

2. Cái đầu tiên là phương thức thể hiện và hai cái còn lại là phương thức lớp

  • class MyCompany:
            
        # methods
        def __init__(self, compname, revenue, employeesize):
            self.name = compname
            self.revenue = revenue
            self.no_of_employees = employeesize
    
        def productivity(self):
            return self.revenue/self.no_of_employees
    
    MyCompany('XYZ Bank', 1000,100).productivity()
    
    Output
    10.0
    
    MyCompany('ABC Bank', 5000,200).productivity()
    
    Output
    25.0
    
    
    0 trả về giá cước taxi trên mỗi km được tính bằng cách chia tổng hóa đơn cho số không. số km taxi đã đi
  • class MyCompany:
            
        # methods
        def __init__(self, compname, revenue, employeesize):
            self.name = compname
            self.revenue = revenue
            self.no_of_employees = employeesize
    
        def productivity(self):
            return self.revenue/self.no_of_employees
    
    MyCompany('XYZ Bank', 1000,100).productivity()
    
    Output
    10.0
    
    MyCompany('ABC Bank', 5000,200).productivity()
    
    Output
    25.0
    
    
    1 trả về số xe taxi đang chạy. Hãy nghĩ về đại lý taxi sở hữu nhiều xe taxi và muốn biết có bao nhiêu xe đang bận
  • class MyCompany:
            
        # methods
        def __init__(self, compname, revenue, employeesize):
            self.name = compname
            self.revenue = revenue
            self.no_of_employees = employeesize
    
        def productivity(self):
            return self.revenue/self.no_of_employees
    
    MyCompany('XYZ Bank', 1000,100).productivity()
    
    Output
    10.0
    
    MyCompany('ABC Bank', 5000,200).productivity()
    
    Output
    25.0
    
    
    2 trả về số hành khách trung bình đi trên ô tô. Để tính trung bình, nó tính đến tất cả các xe đang chạy và số hành khách trên mỗi xe
car1=car()

car1.accelerate()
120

car1.brake()
50

car1.year
2016

car1.mpg
20

car1.speed
100
1
car1=car()

car1.accelerate()
120

car1.brake()
50

car1.year
2016

car1.mpg
20

car1.speed
100
2
car1=car()

car1.accelerate()
120

car1.brake()
50

car1.year
2016

car1.mpg
20

car1.speed
100
3
Taxi. avgnoofpassengers() trả về 2 được tính bằng (3 + 1 + 2)/3

Phương thức tĩnh

Phương pháp tĩnh là phương pháp ít phổ biến nhất trong số cả ba phương pháp. Không giống như các phương thức thể hiện và lớp, phương thức tĩnh không lấy một từ khóa đặc biệt (self, cls) làm tham số đầu tiên. Nó bị hạn chế sử dụng vì Bạn không thể truy cập vào các thuộc tính của một thể hiện (đối tượng) của một lớp CŨNG bạn không thể truy cập vào các thuộc tính của lớp. Cách sử dụng duy nhất là nó có thể được gọi mà không cần đối tượng. Nó chủ yếu hữu ích để tạo các chức năng trợ giúp hoặc tiện ích như xác thực tên trình điều khiển (tên trình điều khiển phải ít hơn 32 ký tự) hoặc số tiền hóa đơn phải lớn hơn 0 (không được âm hoặc không). Xem chương trình dưới đây cho cùng một nhiệm vụ.
car1=car()

car1.accelerate()
120

car1.brake()
50

car1.year
2016

car1.mpg
20

car1.speed
100
4

Di sản

Kế thừa sử dụng mã cho lớp Con đã được viết cho lớp Cha. Ví dụ: một số thuộc tính của lớp phương tiện giống như lớp ô tô, xe buýt và xe tải. Tên tài xế, Số bánh xe, v.v. các thuộc tính giống nhau trong tất cả các lớp. Phương tiện là
class MyCompany:
        
    # methods
    def __init__(self, compname, revenue, employeesize):
        self.name = compname
        self.revenue = revenue
        self.no_of_employees = employeesize

    def productivity(self):
        return self.revenue/self.no_of_employees

MyCompany('XYZ Bank', 1000,100).productivity()

Output
10.0

MyCompany('ABC Bank', 5000,200).productivity()

Output
25.0

6 và Ô tô, xe buýt và xe tải là
class MyCompany:
        
    # methods
    def __init__(self, compname, revenue, employeesize):
        self.name = compname
        self.revenue = revenue
        self.no_of_employees = employeesize

    def productivity(self):
        return self.revenue/self.no_of_employees

MyCompany('XYZ Bank', 1000,100).productivity()

Output
10.0

MyCompany('ABC Bank', 5000,200).productivity()

Output
25.0

7. Trong OOO, nó có nghĩa là một lớp kế thừa các thuộc tính và phương thức hành vi từ lớp cha của nó
  • Tạo một lớp cha
    class MyCompany:
            
        # methods
        def __init__(self, compname, revenue, employeesize):
            self.name = compname
            self.revenue = revenue
            self.no_of_employees = employeesize
    
        def productivity(self):
            return self.revenue/self.no_of_employees
    
    MyCompany('XYZ Bank', 1000,100).productivity()
    
    Output
    10.0
    
    MyCompany('ABC Bank', 5000,200).productivity()
    
    Output
    25.0
    
    
    8 và sử dụng các thuộc tính của nó cho lớp con
    class MyCompany:
            
        # methods
        def __init__(self, compname, revenue, employeesize):
            self.name = compname
            self.revenue = revenue
            self.no_of_employees = employeesize
    
        def productivity(self):
            return self.revenue/self.no_of_employees
    
    MyCompany('XYZ Bank', 1000,100).productivity()
    
    Output
    10.0
    
    MyCompany('ABC Bank', 5000,200).productivity()
    
    Output
    25.0
    
    
    8. Trong chương trình dưới đây, chúng ta không cần chỉ định thuộc tính của lớp cab. Nó kế thừa từ phương tiện
  • car1=car()
    
    car1.accelerate()
    120
    
    car1.brake()
    50
    
    car1.year
    2016
    
    car1.mpg
    20
    
    car1.speed
    100
    
    5
  • Cách thay đổi biến lớp của lớp con
    class MyCompany:
            
        # methods
        def __init__(self, compname, revenue, employeesize):
            self.name = compname
            self.revenue = revenue
            self.no_of_employees = employeesize
    
        def productivity(self):
            return self.revenue/self.no_of_employees
    
    MyCompany('XYZ Bank', 1000,100).productivity()
    
    Output
    10.0
    
    MyCompany('ABC Bank', 5000,200).productivity()
    
    Output
    25.0
    
    
    8
  • car1=car()
    
    car1.accelerate()
    120
    
    car1.brake()
    50
    
    car1.year
    2016
    
    car1.mpg
    20
    
    car1.speed
    100
    
    6
  • Làm sao để lớp con có nhiều tham số hơn lớp cha
  • Trong ví dụ này, chúng ta có hai lớp
    Bank = MyCompany('ABC Bank', 5000,200)
    MyCompany.productivity(Bank)
    
    1 và
    Bank = MyCompany('ABC Bank', 5000,200)
    MyCompany.productivity(Bank)
    
    2 có nhiều thuộc tính giống nhau nhưng có một số thuộc tính duy nhất cho lớp. Để giải quyết vấn đề này, chúng tôi đã tạo một lớp cha có tên là
    class MyCompany:
            
        # methods
        def __init__(self, compname, revenue, employeesize):
            self.name = compname
            self.revenue = revenue
            self.no_of_employees = employeesize
    
        def productivity(self):
            return self.revenue/self.no_of_employees
    
    MyCompany('XYZ Bank', 1000,100).productivity()
    
    Output
    10.0
    
    MyCompany('ABC Bank', 5000,200).productivity()
    
    Output
    25.0
    
    
    8 chứa các thuộc tính và phương thức chung

    car1=car()
    
    car1.accelerate()
    120
    
    car1.brake()
    50
    
    car1.year
    2016
    
    car1.mpg
    20
    
    car1.speed
    100
    
    7
Chúng ta có thể thay thế lệnh này
Bank = MyCompany('ABC Bank', 5000,200)
MyCompany.productivity(Bank)
4 bằng
Bank = MyCompany('ABC Bank', 5000,200)
MyCompany.productivity(Bank)
5
Bank = MyCompany('ABC Bank', 5000,200)
MyCompany.productivity(Bank)
6 được sử dụng để chỉ các thuộc tính và phương thức cha

đa hình

Đa hình có nghĩa là khả năng có nhiều hình thức khác nhau. Đây là một khái niệm quan trọng khi bạn xử lý lớp con và lớp cha. Tính đa hình trong python được áp dụng thông qua ghi đè phương thức và nạp chồng phương thức

Ghi đè phương thức

Ghi đè phương thức cho phép chúng ta có một phương thức ở lớp con có tên giống như ở lớp cha nhưng định nghĩa của phương thức ở lớp con khác với phương thức ở lớp cha.
car1=car()

car1.accelerate()
120

car1.brake()
50

car1.year
2016

car1.mpg
20

car1.speed
100
8Như bạn có thể thấy kết quả hiển thị ở trên, các lớp con sẽ ghi đè lên phương thức của lớp cha

Quá tải phương thức

Nó cho phép bạn định nghĩa một hàm hoặc phương thức một cách linh hoạt để bạn có thể gọi nó chỉ với một số đối số và không cần chỉ định các đối số khác. Bạn cũng có thể gọi nó với tất cả các đối số. Bạn có thể làm bất cứ điều gì theo cách bạn muốn

Trong tập lệnh bên dưới, phương thức có thể được gọi mà không có tham số (bỏ qua tham số cụm từ). Hoặc nó có thể được gọi với tham số

Bank = MyCompany('ABC Bank', 5000,200)
MyCompany.productivity(Bank)
7

car1=car()

car1.accelerate()
120

car1.brake()
50

car1.year
2016

car1.mpg
20

car1.speed
100
9

__str__ là gì?

Nó được sử dụng để tạo ra biểu diễn có thể đọc được của đối tượng

# Creates class Company
class Company:
    
    # attributes
    name = "XYZ Bank"
    turnover = 5000
    revenue = 1000
    no_of_employees = 100
    
    # method
    def productivity(self):
        return Company.revenue/Company.no_of_employees
0

# Creates class Company
class Company:
    
    # attributes
    name = "XYZ Bank"
    turnover = 5000
    revenue = 1000
    no_of_employees = 100
    
    # method
    def productivity(self):
        return Company.revenue/Company.no_of_employees
1

Đóng gói dữ liệu

Đóng gói dữ liệu có nghĩa là hạn chế quyền truy cập vào các phương thức và biến. Điều này có thể ngăn dữ liệu bị sửa đổi do vô tình (lỗi)
  • Khi chúng ta sử dụng hai dấu gạch dưới '__' trước tên thuộc tính, nó làm cho thuộc tính không thể truy cập được bên ngoài lớp. Nó trở thành thuộc tính riêng, nghĩa là bạn không thể đọc và ghi vào các thuộc tính đó ngoại trừ bên trong lớp. Nó thường được sử dụng bởi nhà phát triển mô-đun
  • Khi bạn không sử dụng dấu gạch dưới trước thuộc tính, đó là thuộc tính công khai có thể được truy cập bên trong hoặc bên ngoài lớp
# Creates class Company
class Company:
    
    # attributes
    name = "XYZ Bank"
    turnover = 5000
    revenue = 1000
    no_of_employees = 100
    
    # method
    def productivity(self):
        return Company.revenue/Company.no_of_employees
2Trong chương trình trên, type là thuộc tính công khai và bhk là thuộc tính riêng tư không thể truy cập bên ngoài lớp

Getters và Setters

Chúng được sử dụng để truy xuất và cập nhật giá trị của một biến. Setter là một phương thức cập nhật giá trị của một biến. Getter là một phương thức đọc giá trị của một biến. Hãy tìm hiểu nó bằng các ví dụ.
# Creates class Company
class Company:
    
    # attributes
    name = "XYZ Bank"
    turnover = 5000
    revenue = 1000
    no_of_employees = 100
    
    # method
    def productivity(self):
        return Company.revenue/Company.no_of_employees
3Ở đây chúng tôi đang cập nhật tên của tài xế nhưng nó không ảnh hưởng đến địa chỉ email là sự kết hợp giữa họ và tên.
# Creates class Company
class Company:
    
    # attributes
    name = "XYZ Bank"
    turnover = 5000
    revenue = 1000
    no_of_employees = 100
    
    # method
    def productivity(self):
        return Company.revenue/Company.no_of_employees
4Tên đã được thay đổi từ Sandy thành Tom nhưng địa chỉ Email vẫn giữ nguyên. Được rồi, câu hỏi rõ ràng phát sinh "làm thế nào để cập nhật địa chỉ email?". Với việc sử dụng trình trang trí
Bank = MyCompany('ABC Bank', 5000,200)
MyCompany.productivity(Bank)
8, chúng tôi có thể thay đổi hành vi của email.
Bank = MyCompany('ABC Bank', 5000,200)
MyCompany.productivity(Bank)
9 là một phương thức nhưng nó hoạt động như một thuộc tính bình thường. Phương pháp đặc biệt này được gọi là
class MyCompany:
    #Class Variable
    growth = 0.1
            
    def __init__(self, compname, revenue, employeesize):
        #Instance Variables
        self.name = compname
        self.revenue = revenue
        self.no_of_employees = employeesize

MyCompany.growth
0.1
0
# Creates class Company
class Company:
    
    # attributes
    name = "XYZ Bank"
    turnover = 5000
    revenue = 1000
    no_of_employees = 100
    
    # method
    def productivity(self):
        return Company.revenue/Company.no_of_employees
5

Cách cập nhật họ và tên tự động khi thay đổi địa chỉ email

# Creates class Company
class Company:
    
    # attributes
    name = "XYZ Bank"
    turnover = 5000
    revenue = 1000
    no_of_employees = 100
    
    # method
    def productivity(self):
        return Company.revenue/Company.no_of_employees
6

Thẩm định

Trong thế giới thực, getters & setters chủ yếu được sử dụng để bao gồm logic xác thực. Trong ví dụ dưới đây, chúng tôi đang tạo lớp quyên góp với thuộc tính số tiền. Số tiền phải nằm trong khoảng từ 10 đến 1.000.000. Nếu người dùng nhập ít hơn 10 thì nên đặt là 10. Tương tự, nếu người dùng cố gắng nhập giá trị lớn hơn 1 triệu, giá trị đó chỉ được giới hạn ở mức 1 triệu.
# Creates class Company
class Company:
    
    # attributes
    name = "XYZ Bank"
    turnover = 5000
    revenue = 1000
    no_of_employees = 100
    
    # method
    def productivity(self):
        return Company.revenue/Company.no_of_employees
7

Cách nhập lớp

Trong phần này, chúng tôi sẽ đề cập đến cách tải lớp từ tệp hoặc thư mục khác nhau
  1. Lưu tập lệnh sau dưới dạng
    class MyCompany:
        #Class Variable
        growth = 0.1
                
        def __init__(self, compname, revenue, employeesize):
            #Instance Variables
            self.name = compname
            self.revenue = revenue
            self.no_of_employees = employeesize
    
    MyCompany.growth
    0.1
    
    1
  2. # Creates class Company
    class Company:
        
        # attributes
        name = "XYZ Bank"
        turnover = 5000
        revenue = 1000
        no_of_employees = 100
        
        # method
        def productivity(self):
            return Company.revenue/Company.no_of_employees
    
    8
  3. Trong đoạn mã dưới đây, chỉ định thư mục lưu trữ tệp
    class MyCompany:
        #Class Variable
        growth = 0.1
                
        def __init__(self, compname, revenue, employeesize):
            #Instance Variables
            self.name = compname
            self.revenue = revenue
            self.no_of_employees = employeesize
    
    MyCompany.growth
    0.1
    
    1
  4. # Creates class Company
    class Company:
        
        # attributes
        name = "XYZ Bank"
        turnover = 5000
        revenue = 1000
        no_of_employees = 100
        
        # method
        def productivity(self):
            return Company.revenue/Company.no_of_employees
    
    9
  5. Tạo đối tượng hoặc chạy các phương thức như chúng ta thường làm. Đảm bảo thêm tên mô-đun làm tiền tố trước khi sử dụng lớp và phương thức lớp
  6. Company.name
    
    Output
    'XYZ Bank'
    
    Company.turnover
    
    Output
    5000
    
    Company.no_of_employees
    
    Output
    100
    
    Company().productivity()
    
    Output
    10.0
    
    0Để tránh viết tên mô-đun để truy cập lớp, bạn có thể sử dụng "từ" để tải mô-đun vào không gian tên hiện tại.
    Company.name
    
    Output
    'XYZ Bank'
    
    Company.turnover
    
    Output
    5000
    
    Company.no_of_employees
    
    Output
    100
    
    Company().productivity()
    
    Output
    10.0
    
    1

__name__ == "__main__" là gì?

Bất kỳ mã nào bên trong

class MyCompany:
    #Class Variable
    growth = 0.1
            
    def __init__(self, compname, revenue, employeesize):
        #Instance Variables
        self.name = compname
        self.revenue = revenue
        self.no_of_employees = employeesize

MyCompany.growth
0.1
3 sẽ được thực thi khi bạn chạy. py trực tiếp (từ thiết bị đầu cuối)

Nếu bạn nhập mô-đun

class MyCompany:
    #Class Variable
    growth = 0.1
            
    def __init__(self, compname, revenue, employeesize):
        #Instance Variables
        self.name = compname
        self.revenue = revenue
        self.no_of_employees = employeesize

MyCompany.growth
0.1
4, mã bên trong
class MyCompany:
    #Class Variable
    growth = 0.1
            
    def __init__(self, compname, revenue, employeesize):
        #Instance Variables
        self.name = compname
        self.revenue = revenue
        self.no_of_employees = employeesize

MyCompany.growth
0.1
3 sẽ không được chạy

Để kiểm tra điều này, hãy lưu và chạy tập lệnh sau từ thiết bị đầu cuối cũng như truy cập tập lệnh bằng lệnh nhập.
Company.name

Output
'XYZ Bank'

Company.turnover

Output
5000

Company.no_of_employees

Output
100

Company().productivity()

Output
10.0
2

Cách thay đổi thư mục trong dấu nhắc lệnh

Nhập cd theo sau là dấu cách rồi tên thư mục. Khi thư mục bên phải được đặt, bạn có thể nhập tên của tệp tập lệnh python của mình. Xem ảnh chụp nhanh bên dưới

Bài tập

Tạo lớp
class MyCompany:
    #Class Variable
    growth = 0.1
            
    def __init__(self, compname, revenue, employeesize):
        #Instance Variables
        self.name = compname
        self.revenue = revenue
        self.no_of_employees = employeesize

MyCompany.growth
0.1
6 có thuộc tính chiều dài và chiều rộng. Tạo 2 phương pháp tính diện tích hình chữ nhật và chu vi hình chữ nhật. Diện tích được tính bằng cách nhân chiều dài với chiều rộng. Chu vi gấp 2 lần chiều dài + chiều rộng. Giải quyết và gửi giải pháp của bạn trong hộp bình luận

Phần kết luận

Sau khi hoàn thành hướng dẫn này, bạn hẳn đã nắm được các chủ đề quan trọng của lập trình hướng đối tượng được sử dụng trong Python. Bước tiếp theo của bạn là thực hành các khái niệm bạn đã học. Hãy thử sử dụng nó trong các dự án trực tiếp của bạn

Lớp học trong ví dụ thời gian thực Python là gì?

Học Python. 50 hướng dẫn Python hàng đầu

Thông báo
Chia sẻ Chia sẻ Tweet Đăng ký

bài viết liên quan

về tác giả

Lớp học trong ví dụ thời gian thực Python là gì?

Deepanshu thành lập ListenData với một mục tiêu đơn giản - Làm cho các phân tích trở nên dễ hiểu và dễ theo dõi. Ông có hơn 10 năm kinh nghiệm trong lĩnh vực khoa học dữ liệu. Trong nhiệm kỳ của mình, ông đã làm việc với các khách hàng toàn cầu trong nhiều lĩnh vực khác nhau như Ngân hàng, Bảo hiểm, Cổ phần tư nhân, Viễn thông và Nhân sự

Một ví dụ sử dụng một lớp trong Python là gì?

Đối tượng Python . Ví dụ: giả sử Bike là một lớp thì chúng ta có thể tạo các đối tượng như bike1 , bike2 , v.v. từ lớp . Đây là cú pháp để tạo một đối tượng. Ở đây, bike1 là đối tượng của lớp.

Lớp Python được sử dụng để làm gì?

Các lớp Python cung cấp tất cả các tính năng tiêu chuẩn của Lập trình hướng đối tượng . cơ chế kế thừa lớp cho phép nhiều lớp cơ sở, một lớp dẫn xuất có thể ghi đè bất kỳ phương thức nào của lớp cơ sở hoặc các lớp của nó và một phương thức có thể gọi phương thức của lớp cơ sở có cùng tên.

lớp giải thích với ví dụ là gì?

Một lớp là một nhóm đối tượng có chung thuộc tính và hành vi . Ví dụ: chúng ta có thể coi ô tô là một lớp có các đặc điểm như vô lăng, ghế ngồi, phanh, v.v. Và hành vi của nó là di động.

Giải thích đơn giản về lớp Python là gì?

Các lớp và đối tượng Python . Hầu hết mọi thứ trong Python là một đối tượng, với các thuộc tính và phương thức của nó. Lớp giống như một hàm tạo đối tượng hoặc "bản thiết kế" để tạo đối tượng .