Это не столько использование строки в качестве аргумента. Когда вы устанавливаете атрибуты класса, вы должны ссылаться на них в своем коде. Возьмите этот пример:
class Employee:
def __init__(self, name, age):
self.name = name
self.age = age
employee_1 = Employee
add_name = input('Enter name:> ')
add_age = int(input('Enter age:> '))
employee_1.name = add_name
employee_1.age = add_age
print('Employee name: ', employee_1.name, '\nEmployee age: ', employee_1.age)
Вывод:
Enter name:> John Smith
Enter age:> 40
Employee name: John Smith
Employee age: 40
Вам не нужно использовать input
для установки информации. Вы можете просто установить его из переменной employee_1
.
employee_1 = Employee('John Smith', 40)
Существует метод, использующий super()
, где вы можете создать подкласс с дополнительными атрибутами, которые не влияют на класс Parent.
class Person1(Employee): # passing the parent class through
def __init__(self):
self.email = 'JohnSmith@nowhere.com'
super().__init__(name='John Smith', age=40)
employee = Person1()
employee_1 = Employee('John Doe', 20)
print('Employee name: ', employee.name, '\nEmployee age: ', employee.age, '\nEmployee email: ', employee.email)
print('Employee name: ', employee_1.name, '\nEmployee age: ', employee_1.age)
Вывод:
Employee name: John Smith
Employee age: 40
Employee email: JohnSmith@nowhere.com
Employee name: John Doe
Employee age: 20
Как видите, я мог бы добавить атрибут email
без влияния на родительский класс, однако атрибуты из родительского класса были унаследованы.