Sunday, January 19, 2025

[Python] Lesson 46 – Objects as arguments

-

Trong Python, objects as arguments là một phương thức cho phép truyền đối tượng (object) như một đối số vào một hàm hoặc phương thức. Đối tượng này có thể được tạo ra bởi một class hoặc một đối tượng khác.

Cú pháp khai báo:

def function_name(object):
    # code implementation

Ví dụ 1: Truyền đối tượng vào hàm

class Person:
    def __init__(self, name):
        self.name = name

def greet(person):
    print("Hello, " + person.name)

person1 = Person("Alice")
greet(person1) # Hello, Alice

Trong ví dụ này, chúng ta định nghĩa class Person với thuộc tính name và phương thức khởi tạo. Sau đó, chúng ta định nghĩa hàm greet() nhận đối tượng person làm đối số và in ra lời chào với thuộc tính name của đối tượng. Cuối cùng, chúng ta tạo một đối tượng person1 từ class Person và truyền nó vào hàm greet().

Ví dụ 2: Truyền đối tượng vào phương thức

class Circle:
    def __init__(self, radius):
        self.radius = radius

    def area(self):
        return 3.14 * self.radius ** 2

class Cylinder:
    def __init__(self, height, base):
        self.height = height
        self.base = base

    def volume(self):
        return self.base.area() * self.height

circle = Circle(5)
cylinder = Cylinder(10, circle)
print(cylinder.volume()) # 785.0

Trong ví dụ này, chúng ta định nghĩa class Circle với thuộc tính radius và phương thức tính diện tích. Sau đó, chúng ta định nghĩa class Cylinder với thuộc tính heightbase, trong đó base là một đối tượng của class Circle. Phương thức volume() của class Cylinder sử dụng phương thức area() của đối tượng base để tính thể tích hình trụ. Cuối cùng, chúng ta tạo một đối tượng circle từ class Circle và truyền nó vào thuộc tính base của đối tượng cylinder.

Ví dụ 3: Truyền đối tượng vào hàm khởi tạo

Trong ví dụ này, ta sẽ tạo ra hai class: PersonEmployee. Person sẽ đại diện cho thông tin cơ bản của một người, bao gồm name, ageaddress. Employee sẽ kế thừa từ Person và có thêm thông tin liên quan đến việc làm như companysalary.

Trong phần khởi tạo của Employee, ta sẽ truyền một đối tượng Person vào và lấy thông tin của nó để tạo ra một đối tượng Employee mới với thông tin từ cả PersonEmployee.

class Person:
    def __init__(self, name, age, address):
        self.name = name
        self.age = age
        self.address = address

class Employee(Person):
    def __init__(self, person, company, salary):
        super().__init__(person.name, person.age, person.address)
        self.company = company
        self.salary = salary

person = Person("John", 30, "123 Main Street")
employee = Employee(person, "ACME Inc.", 50000)

print(employee.name)       # Output: John
print(employee.age)        # Output: 30
print(employee.address)    # Output: 123 Main Street
print(employee.company)    # Output: ACME Inc.
print(employee.salary)     # Output: 50000

Ở đây, ta tạo ra một đối tượng person với tên “John”, tuổi 30 và địa chỉ “123 Main Street”. Sau đó, ta tạo ra một đối tượng employee và truyền đối tượng person và thông tin về công ty và lương. Trong phần khởi tạo của Employee, ta sử dụng super() để gọi phương thức khởi tạo của Person và lấy thông tin từ đối tượng person được truyền vào để khởi tạo đối tượng Employee mới.

Sau khi tạo xong đối tượng employee, ta có thể truy cập vào các thuộc tính của PersonEmployee bằng cách gọi tên thuộc tính của đối tượng employee.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories