12/08/2018, 18:21

Học Python cơ bản (P2)

Hôm nay mình sẽ tiếp tục viết tiếp về những kiến thức cơ bản của python, các bạn có thể xem P1 ở đây: https://viblo.asia/p/hoc-python-co-ban-p1-LzD5d6REZjY Classes & Objects Một chút ít lý thuyết: Object là một đại diện của các đối tượng thế giới thực như ô tô, chó hoặc xe đạp. Các ...

Hôm nay mình sẽ tiếp tục viết tiếp về những kiến thức cơ bản của python, các bạn có thể xem P1 ở đây: https://viblo.asia/p/hoc-python-co-ban-p1-LzD5d6REZjY

Classes & Objects

Một chút ít lý thuyết:

Object là một đại diện của các đối tượng thế giới thực như ô tô, chó hoặc xe đạp. Các Object gồm hai đặc điểm chính: dữ liệu và* hành vi*.

Ô tô có dữ liệu như: số bánh, số cửa và chỗ ngồi Họ cũng thể thực hiện các hành vi như: tăng tốc, dừng lại, hiển thị lượng nhiên liệu còn lại v.v...

Chúng tôi xác định dữ liệu dưới dạng thuộc tính và hành vi như các phương thức trong lập trình hướng đối tượng:

Dữ liệu → Thuộc tính và Hành vi → Phương thức (Methods)

Một Class là bản thiết kế mà từ đó các Object riêng lẻ được tạo ra. Trong thế giới thực, chúng ta thường tìm thấy nhiều Object cùng loại giống như xe hơi.

Tất cả cùng một kiểu dáng và mô hình (và tất cả đều có một động cơ, bánh xe, cửa, vv).

Mỗi chiếc xe được chế tạo từ cùng một tập hợp các bản thiết kế và có cùng thành phần.

lập trình hướng đối tượng trong Python

Python, như một ngôn ngữ lập trình hướng đối tượng nên nó có các khái niệm về Class và Object.

Một Class là một bản thiết kế chi tiết, một mô hình cho các đối tượng của nó.

Một Class sẽ xác định các thuộc tính và hành vi (như chúng ta đã nói trong phần lý thuyết).

Ví dụ, một Class xe có các thuộc tính riêng để xác định đối tượng nào là phương tiện. Số lượng bánh xe, loại bình xăng, sức chứa và vận tốc tối đa là tất cả các thuộc tính của một chiếc xe.

Với ý nghĩ này, hãy xem xét cú pháp Python cho Class về xe:

class Vehicle:
    pass

Chúng ta định nghĩa một class Vehicle bằng cách class + Tên của class. Dễ dàng phải không?

Các Object là các cá thể (instances) của một Class. Chúng ta tạo một Object bằng cách đặt:

car = Vehicle()
print(car) # <__main__.Vehicle instance at 0x7fb1de6c2638>

Ở đây car là một object của class Vehicle.

Hãy nhớ rằng class Vehicle của chúng ta có 4 thuộc tính: số lượng bánh xe, loại bình xăng, sức chứa và vận tốc tối đa

Chúng ta sẽ thiết lập tất cả các thuộc tính này khi tạo đối tượng xe.

Ở đây, chúng ta định nghĩa class để nhận dữ liệu khi nó khởi tạo nó:

class Vehicle:
    def __init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity):
        self.number_of_wheels = number_of_wheels
        self.type_of_tank = type_of_tank
        self.seating_capacity = seating_capacity
        self.maximum_velocity = maximum_velocity

Chúng ta sẽ sử dụng phương pháp init và gọi nó là phương thức khởi tạo.

Vì vậy, khi chúng ta tạo ra Object xe, chúng ta có thể định nghĩa các thuộc tính này.

Hãy tưởng tượng rằng chúng ta yêu mô hình Tesla S, và chúng ta muốn tạo ra loại đối tượng này.

Nó có bốn bánh xe, chạy bằng năng lượng điện, có năm chỗ ngồi, và vận tốc tối đa là 250km / giờ (155 mph).

Hãy tạo đối tượng này:

tesla_model_s = Vehicle(4, 'electric', 5, 250)

Bốn bánh + loại tiêu thụ là điện + năm chỗ ngồi + tốc độ tối đa là 250km / h.

Tất cả các thuộc tính được thiết lập.

Nhưng làm cách nào chúng ta có thể truy cập vào các giá trị của các thuộc tính này?

Chúng ta gửi một tin nhắn cho đối tượng hỏi về họ.

Chúng ta gọi nó là một phương pháp (method).Đó là hành vi của đối tượng.

class Vehicle:
    def __init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity):
        self.number_of_wheels = number_of_wheels
        self.type_of_tank = type_of_tank
        self.seating_capacity = seating_capacity
        self.maximum_velocity = maximum_velocity

    def number_of_wheels(self):
        return self.number_of_wheels

    def set_number_of_wheels(self, number):
        self.number_of_wheels = number

Đây là triển khai 2 method: numberofwheelsset_number_of_wheels. Chúng ta sẽ gọi nó là getter & setter.

Bởi vì giá trị đầu tiên nhận giá trị thuộc tính của nó và giá trị thứ hai là giá trị thiết lập mới cho thuộc tính.

Trong Python, chúng ta có thể làm điều đó bằng cách sử dụng @property để xác định getterssetters. Hãy xem nó bằng mã:

class Vehicle:
    def __init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity):
        self.number_of_wheels = number_of_wheels
        self.type_of_tank = type_of_tank
        self.seating_capacity = seating_capacity
        self.maximum_velocity = maximum_velocity

    @property
    def number_of_wheels(self):
        return self.number_of_wheels

    @number_of_wheels.setter
    def number_of_wheels(self, number):
        self.number_of_wheels = number

Và chúng ta có thể sử dụng các method này làm thuộc tính:

tesla_model_s = Vehicle(4, 'electric', 5, 250)
print(tesla_model_s.number_of_wheels) # 4
tesla_model_s.number_of_wheels = 2 # setting number of wheels to 2
print(tesla_model_s.number_of_wheels) # 2

Điều này hơi khác so với method thông thường.

Các method này hoạt động như các thuộc tính.

Ví dụ: khi chúng tôi đặt số bánh xe mới, chúng tôi không áp dụng hai làm thông số, nhưng đặt giá trị 2 thành numberofwheels. Đây là một cách để viết code gettersetter.

Nhưng chúng ta cũng có thể sử dụng các phương thức cho những thứ khác, như phương thức “makenoise”. Hãy xem nó:

class Vehicle:
    def __init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity):
        self.number_of_wheels = number_of_wheels
        self.type_of_tank = type_of_tank
        self.seating_capacity = seating_capacity
        self.maximum_velocity = maximum_velocity

    def make_noise(self):
        print('VRUUUUUUUM')

Khi chúng ta gọi phương thức này, nó chỉ trả về một String "VRRRRUUUUM."

tesla_model_s = Vehicle(4, 'electric', 5, 250)
tesla_model_s.make_noise() # VRUUUUUUUM
Bài liên quan

Học javascript cơ bản - P2

Ở phần trước của bài học này các bạn đã tìm hiểu về những kiến thức cơ bản nhất trong JavaScript bao gồm cách nhúng và chạy mã JavaScript, cách tạo một hộp thoại cảnh báo alert, làm việc với biến và kiểu dữ liệu. Ở phần hai cũng là phần cuối của bài học này các bạn sẽ hoàn tất các kỹ năng cơ bản ...

Bùi Văn Nam viết 10:50 ngày 07/09/2018

Học Python cơ bản P3

Hôm nay mình sẽ tiếp tục viết tiếp về những kiến thức cơ bản của python, các bạn có thể xem P1 ở đây: https://viblo.asia/p/hoc-python-co-ban-p1-LzD5d6REZjY P2 ở đây: https://viblo.asia/p/hoc-python-co-ban-p2-m68Z00wdZkG Encapsulation: Ẩn thông tin Encapsulation (đóng gói) là một cơ chế ...

Tạ Quốc Bảo viết 09:28 ngày 07/09/2018

Học Python cơ bản và nâng cao - Học ngôn ngữ lập trình Python hay nhất

[Học Python cơ bản và nâng cao - Học ngôn ngữ lập trình Python hay nhất] Python là ngôn ngữ lập trình hướng đối tượng, bậc cao, mạnh mẽ. Ngoài ra, học Python là khá đơn giản và dễ dàng. Python cũng là một ngôn ngữ thông dịch, tức là ngôn ngữ không cần phải biên dịch ra file chạy mà ...

Tạ Quốc Bảo viết 11:59 ngày 14/08/2018

Học Python cơ bản (P2)

Hôm nay mình sẽ tiếp tục viết tiếp về những kiến thức cơ bản của python, các bạn có thể xem P1 ở đây: https://viblo.asia/p/hoc-python-co-ban-p1-LzD5d6REZjY Classes & Objects Một chút ít lý thuyết: Object là một đại diện của các đối tượng thế giới thực như ô tô, chó hoặc xe đạp. Các ...

Tạ Quốc Bảo viết 18:21 ngày 12/08/2018

Học Python cơ bản (P1)

Python là gì? Python là một ngôn lập trình bậc cao do Guido van Rossum tạo ra vào 1990 và nó có cấu trúc rõ ràng sáng sủa, và dễ học với bất cứ ai muốn học về lập trình. Python được dùng trong rất nhiều lĩnh vực: khoa học dữ liệu, web, machine learning... Vd như các trang web nổi tiếng: Quora, ...

Bùi Văn Nam viết 18:05 ngày 12/08/2018
0