Верните это: (Параметры метода __init__, имена атрибутов, созданных в методе __init__) - PullRequest
1 голос
/ 16 июня 2020

Согласно приведенному ниже фрагменту, вопреки соглашению, атрибуты класса Person не имеют того же имени, что и параметры, переданные методу __init__.

class Person:
    def __init__(self, name, surname,address):
        self.onoma = name
        self.diefthynsi = adress
        self.eponymo = surname

В идеале я хотел бы просмотреть список кортежей, каждый из которых имеет параметр __init__ и соответствующее имя атрибута, присвоенного экземпляру класса Person. Как это:

(name, onoma), (surname, eponymo), (address, diefthynsi)

1 Ответ

0 голосов
/ 16 июня 2020

Атрибуты могут поступать из __dict__, попробуйте следующее:

import types

def get_attributes(obj):
    """
    Type of attributes is function, lambda or method not included.
    If required, you can add more types to exclude.
    """
    result = tuple(
        (value, key) for (key, value) in obj.__dict__.items()
            if type(value) not in
                (types.FunctionType, types.LambdaType, types.MethodType))
    return result

class Person:
    def __init__(self, name, surname, address):
        self.onoma = name
        self.diefthynsi = address
        self.eponymo = surname

    def help(self):
        pass

Sophia = Person('Sophia', 'Loren', 'ITALY')

print(get_attributes(Sophia))

# (('Sophia', 'onoma'), ('ITALY', 'diefthynsi'), ('Loren', 'eponymo'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...