Python 中组合(Has-A 关系)的实现
原文:https://www . geesforgeks . org/composition-of-has-a-relation-in-python/
我们可以使用这两个概念来访问类中一个类的成员:
- 按成分(具有-α关系)
- 通过遗传(Is-A 关系)
这里我们将研究如何在 Python 中使用实现有一个关系。
Python 中组合的实现
通过使用类名或创建一个对象,我们可以在另一个类中访问一个类的成员。
示例:
class Engine:
# engine specific functionality
'''
'''
'''
class Car:
e = Engine()
e.method1()
e.method2()
'''
'''
在上面的例子中,汽车级有一个发动机级参考。在 Car 类中,我们也可以创建不同的变量和方法。使用车内引擎类的对象引用,我们可以很容易地访问车内引擎类的每个成员。
示例 1: 用于合成的可执行代码
Python 3
class Employee:
# constructor for initialization
def __init__(self, name, age):
self.name = name
self.age = age
# instance method
def emp_data(self):
print('Name of Employee : ', self.name)
print('Age of Employee : ', self.age)
class Data:
def __init__(self, address, salary, emp_obj):
self.address = address
self.salary = salary
# creating object of Employee class
self.emp_obj = emp_obj
# instance method
def display(self):
# calling Employee class emp_data()
# method
self.emp_obj.emp_data()
print('Address of Employee : ', self.address)
print('Salary of Employee : ', self.salary)
# creating Employee class object
emp = Employee('Ronil', 20)
# passing obj. of Emp. class during creation
# of Data class object
data = Data('Indore', 25000, emp)
# call Data class instance method
data.display()
Output
Name of Employee : Ronil
Age of Employee : 20
Address of Employee : Indore
Salary of Employee : 25000
在上面的例子中,我们有 2 个类【员工】和【数据】。在【数据】类构造器中,我们正在创建一个雇员类的对象,因此我们可以轻松访问雇员类的成员。在数据类员工类对象成为“数据”类的实例变量。我们在构造函数中创建对象,所以每当我们调用类雇员的任何方法或变量时,我们必须使用 self 关键字 。我们可以将“self . EMP _ obj”替换为“Employee”,但是通过使用类名 Employee 我们只能访问 Employee 类的静态方法或变量。
示例 2: 使用组合的另一个简单示例
Python 3
class A:
def __init__(self):
print('Class - A Constructor')
def m1(self):
print('M1 method of Class - A.')
class B:
def __init__(self):
print('Class - B Constructor.')
# instance method
def m2(self):
# creating object of class A inside
# B class instance method
obj = A()
# calling m1() method of class-A
obj.m1()
print('M2 method of Class - B.')
# creating object of class-B
obj = B()
# calling B class m2() method
obj.m2()
输出
Class - B Constructor.
Class - A Constructor
M1 method of Class - A.
M2 method of Class - B.
在上面的例子中,我们在类 B 的实例方法中创建了一个类 A 的对象,即 m2()方法。所以执行流程将是最初,将创建 B 类的对象,这样 B 类的构造函数将被执行。现在 B 类的对象正在调用 m2()方法,所以光标会转到 B 类的 m2()方法,在 B 类的 m2()方法里面,创建了 A 类的对象,所以执行 A 类的构造函数,然后执行 A 类的 m1()方法,最后打印 m2()方法的最终语句,执行结束在这里。
版权属于:月萌API www.moonapi.com,转载请注明出处