Class python là gì

Python là một ngôn ngữ lập trình hướng đối tượng (OOP – object-oriented programming language). Hầu hết mọi thứ trong Python đều là đối tượng (object) với các thuộc tính (property) và phương thức (method) của riêng đối tượng đó.

Ví dụ, mọi giá trị dữ liệu trong Python đều được xem là một loại đối tượng (object). Khi gán một giá trị cho một biến (variable) thì bản chất biến đó sẽ tham chiếu đến một đối tượng lưu trữ giá trị dữ liệu đó.

Trước khi tìm hiểu về OOP trong Python, các bạn có thể tham khảo trước series bài học Phương pháp lập trình hướng đối tượng. Series bài học này giúp các bạn có tư duy cơ bản về OOP với C++, làm cơ sở để học và hiểu OOP trong các ngôn ngữ khác dễ dàng hơn.

Một lớp (class) là một thiết kế (blueprint) hay mẫu (prototype) cho các đối tượng cùng kiểu. Ví dụ, chúng ta có một lớp Cat chứa tất cả thông tin về một con mèo như tên, màu sắc, cân nặng, hành động bắt chuột,… Một con mèo cụ thể là một đối tượng và sẽ có những thông tin chung của một con mèo nhưng với những giá trị khác nhau.

Class python là gì

Trong Python, chúng ta sử dụng từ khóa class để tạo một lớp (class).

class Cat: # Properties of Cat class name = "Tom" color = "grey and white" # Methods of Cat class def catchMouse(self): print("Catch Jerry mouse.") def sleep(self): print("Take a nap.")

Trong ví dụ trên, chúng ta định nghĩa một lớp (class) Cat bao gồm các thuộc tính là name, color và các phương thức là catchMouse()sleep().

Tham số self là một tham chiếu đến đối tượng 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 đó.

class Cat: # Properties of Cat class name = "Tom" color = "grey and white" # Methods of Cat class def catchMouse(self): print(self.name, "catches Jerry mouse.") def sleep(self): print(self.name, "takes a nap.")

Không nhất thiết phải đặt tên tham số này là self. Chúng ta có thể đặt bất cứ tên gì mà chúng ta thích. Nhưng Python sẽ mặc định hiểu tham số đầu tiên của bất kỳ hàm nào trong class là tham số self.

class Cat: # Properties of Cat class name = "Tom" color = "grey and white" # Methods of Cat class def catchMouse(abc): print(abc.name, "catches Jerry mouse.") def sleep(abc): print(abc.name, "takes a nap.")

Định nghĩa của lớp (class) không được để trống. Nhưng nếu chưa biết các thuộc tính và phương thức của lớp để định nghĩa thì có thể dùng câu lệnh pass trong class để tránh gặp lỗi.

class Person: pass

Đối tượng (object) là một thực thể cụ thể của lớp (class). Chúng ta có thể sử dụng tên của lớp để tạo một đối tượng. Khi một đối tượng được tạo ra thì Python sẽ cấp phát vùng nhớ để lưu trữ đối tượng đó.

class Cat: # Properties of Cat class name = "Tom" color = "grey and white" # Methods of Cat class def catchMouse(self): print(self.name, "catches Jerry mouse.") def sleep(self): print(self.name, "takes a nap.") # create an object of Cat class tom = Cat() print(tom.name) print(tom.color) tom.catchMouse() tom.sleep()

Kết quả
Tom grey and white Tom catches Jerry mouse. Tom takes a nap.

Chúng ta có thể xóa một đối tượng với từ khóa del.

class Cat: # Properties of Cat class name = "Tom" color = "grey and white" # Methods of Cat class def catchMouse(self): print(self.name, "catches Jerry mouse.") def sleep(self): print(self.name, "takes a nap.") tom = Cat() print("Before delete tom object:", tom) del tom print("After delete tom object:", tom)

Kết quả
Before delete tom object: <__main__.Cat object at 0x0000023672FE7D60> Traceback (most recent call last): File "c:\python-examples\example.py", line 14, in <module> print("After delete tom object:", tom) NameError: name 'tom' is not defined

Ở bài này, chúng ta đã tìm hiểu cách tạo ra một lớp (class) và một đối tượng (object) trong Python một cách đơn giản nhất. Và trong Python, một lớp (class) lúc nào cũng có một hàm __init__() được dựng sẵn (built-in). Hàm này được gọi là hàm khởi tạo (constructor) của lớp. Trong nhiều trường hợp, chúng ta cần xây dựng lại hàm __init__() khi tạo một lớp. Chúng ta sẽ tìm hiểu kỹ về hàm __init__() ở bài Hàm khởi tạo (constructor) của class trong Python.

Bài trước và bài sau trong môn học

This entry is part 19 of 29 in the series Python Không Khó

83 / 100

Trong bài viết hôm nay, Lập trình không khó sẽ hướng dẫn các bạn về class và objects trong python. Bài viết này là bước đầu để các bạn làm quen với hướng đối tượng trong python.

Class và objects trong python là gì?

Python là một ngôn ngữ hướng đối tượng và hầu hết mọi thực thể trong Python là một đối tượng(objects), có nghĩa là các lập trình viên sử dụng rộng rãi các lớp và các đối tượng trong khi code bằng Python. Các objects trong Python về cơ bản là sự đóng gói các biến và hàm. Một Class giống như một hàm tạo đối tượng hay một “bản thiết kế” để các lập trình viên tạo các đối tượng.

Cách tạo một class

Cú pháp

class tên_class:

   các_phương_thc_&_thuc tính

  • Để tạo một class, chúng ta sử dụng từ khóa class
  • Tên class được đặt theo quy tắc đặt định danh trong python.
  • Việc khởi tạo class được kết thúc bằng dấu :phía sau tên class.
  • Các phương thức và thuộc tính của class tạo nên phần thân.Phần thân của class được viết lùi vào một khoảng bằng nhau.

VD: tạo một class myClass có thuộc tính là x=5

Tạo một objects trong python

Khi đã có một class, chúng ta có thể sử dụng class đó để tạo một objects trong python.

#ví dụ về tạo objects trong python

class myClass:

    x=5

p = myClass()

print(p.x)

Hàm __init__()

Ở trên là một ví dụ về một class đơn giản, bạn có thể thấy nó giống như một hàm. Những class như vậy thường không có ích nhiều trong thực tế.

Để hiểu ý nghĩa một lớp, phải hiểu được bản chất của hàm init().

Tất cả các class đều có một hàm được tạo mặc định là hàm init(). Hàm init() được dùng để gán giá trị thuộc tính cho đối tượng hoặc các hoạt động khác khi đối tượng được tạo.

Như một hàm thông thường hàm init cũng được tạo bằng từ khóa def, nếu như trong ngôn ngữ lập trình hướng đối tượng khác thì đây được gọi là hàm tạo. Chúng ta có thể truyền bất kỳ số lượng đối số nào trong khi tạo đối tượng lớp theo định nghĩa của hàm init.

Ví dụ: tạo một class Person với hai thuộc tính là name và age:

class Person:

    def __init__(self, name, age):

        self.name = name

        self.age = age

person = Person("Hiếu", 19)

print(person.name)  #return Hiếu

print(person.age)   #return 19

Trong ví dụ trên, hàm init hoạt động như một hàm tạo và được gọi tự động ngay khi câu lệnh person = Person(“Hiếu”, 19) được thực thi.

Vì nó là một hàm bên trong một lớp, nên đối số mặc định đầu tiên được truyền vào nó là self. Tham số thứ hai,là name được sử dụng để bắt đối số thứ hai được truyền vào là “Hiếu”. Tham số thứ ba, là age được dùng để bắt đối số thứ ba được truyền vào là 19.

Self là gì?

self giống như this trong các ngôn ngữ hướng đối tượng khác. Đối với các ngôn ngữ khác thì mình không cần phải truyền this hoặc self vào. Nhưng Python yêu cầu phải như thế.

self trong Python không nhất thiết phải là self mà có thể là dat hoặc dnh cũng được. Nhưng hầu hết người ta sử dụng self để thể hiện đây là bản thân object. Trong tiếng Anh self có thể hiểu là bản thân nó. Điều này giúp việc đọc code dễ hơn.

Các phương thức

Đối tượng cũng có thể chứa các phương thức. Các phương thức là các hàm dùng để mô tả các đối tượng.

Ví dụ:

class Person:

    def __init__(self, name, age):

        self.name = name

        self.age = age

    def display(self):

        print("hello " + self.name)

person = Person("Hiếu", 19)

person.display()

Trong ví dụ trên, thay vì sử dụng hàm print ở ngoài.Chúng ta có thể tạo một hàm display có tác dụng tương tự như hàm in.

Kế thừa trong python

Kế thừa là một tính năng được sử dụng trong lập trình hướng đối tượng; nó đề cập đến việc định nghĩa một lớp mới với ít hoặc không sửa đổi một lớp hiện có. Lớp mới được gọi là lớp dẫn xuất và lớp mà nó kế thừa được gọi là lớp cơ sở . Python hỗ trợ kế thừa; nó cũng hỗ trợ nhiều kế thừa . Một lớp có thể kế thừa các thuộc tính và phương thức hành vi từ một lớp khác.

class Car:

    def __init__(self, color):

        self.color = color

class Oto(Car):

    def display(self):

        print("xe màu " + self.color)

oto = Oto("xanh")

oto.display()

#return xe màu xanh

Trong ví dụ trên, mặc dù color được tạo ở bên trong class Car. Nhưng vẫn có thể truy cập được từ trong class Oto.

class myClass():

    def method1(self):

        print("Đây là lớp cơ sở")

class childClass(myClass):

    def method2(self):

        print("Đây là lớp con")

c2 = childClass()

c2.method1()

c2.method2()

Thêm một ví dụ nữa, các hàm cũng có thể truy cập từ lớp con khi được kế thừa từ lớp cơ sở

kết quả:

Đây là lớp cơ sở

Đây là lớp con

Các loại kế thừa

  1. Kế thừa đơn: Kiểu thừa kế khi một lớp chỉ kế thừa một lớp cơ sở được gọi là thừa kế đơn, như chúng ta đã thấy trong ví dụ trên.
  2. Đa kế thừa: Khi một lớp kế thừa nhiều lớp cơ sở, nó được gọi là đa kế thừa. Không giống như các ngôn ngữ như Java , Python hoàn toàn hỗ trợ đa kế thừa. Tất cả các lớp cơ sở được đề cập bên trong ngoặc như một danh sách được phân tách bằng dấu phẩy.

class Class1:

    def __init__(self):

        print("class 1")

class Class2:

    def __init__(self):

        print("class 2")

class Class3(Class1, Class2):

    def __init__(self):

        Class1.__init__(self)

        Class2.__init__(self)

c = Class3()

Kết quả:

  1. Kế thừa đa cấp:
    Khi một lớp kế thừa một lớp cơ sở và sau đó một lớp khác kế thừa lớp dẫn xuất trước          đó, tạo thành cấu trúc lớp ‘cha mẹ, con và cháu’, thì nó được gọi là thừa kế đa cấp.

class Class1:

    def __init__(self):

        print("class 1")

class Class2(Class1):

    def __init__(self):

        print("class 2")

class Class3(Class2):

    def __init__(self):

        Class2.__init__(self)

        Class1.__init__(self)

c = Class3()

kết quả:

  1. Kế thừa phân cấp:  Khi một lớp cơ sở được kế thừa bởi nhiều lớp dẫn xuất, nó được gọi là thừa kế phân cấp.
  2. Di truyền lai: Di ​​truyền lai là khi có sự kết hợp của các kiểu thừa kế đã đề cập ở trên, nghĩa là sự pha trộn của nhiều loại thừa kế.

Thuộc tính riêng của một lớp trong Python

Trong khi thực hiện kế thừa, có một số trường hợp nhất định trong đó chúng ta không muốn tất cả các thuộc tính của một lớp được kế thừa bởi lớp dẫn xuất. Trong các trường hợp đó, chúng ta có thể đặt các thuộc tính đó là thành viên riêng của lớp cơ sở. Chúng ta làm điều này bằng cách thêm hai dấu gạch dưới (__) trước tên biến.

class myClass(object):

    def __init__(self):

        self.x = 10

        self .__y = 5

class Class1(myClass):

    def __init__(self):

        self.z = 20

ob1 = Class1()

print(ob1.y)

Khi chạy chương trình sẽ báo lỗi như sau:

Class python là gì

Bài viết của mình đến đây là kết thúc, hi vọng sau bài viết các bạn có thể hiểu hơn về class và objects trong python.

Hãy tham gia group lập trình không khó để cùng thảo luận về các vấn đề về lập trình.

Hẹn các bạn vào các bài học sau!!!