Инициализированный элемент кортежа становится NoneType - PullRequest
0 голосов
/ 26 апреля 2019

Я запускаю кортеж здесь

players = [Player("Local", (0,0), 20)]

и всякий раз, когда я пытаюсь получить доступ к любому из членов класса игрока из этого элемента, я получаю объект NoneType, не имеющий атрибута "ошибка модели":

players[0].model.pos = mousepos

Я не понимаю, почему я не могу использовать этот элемент, потому что я инициализирую этот элемент как тип 'Player'

Заранее спасибо

Редактировать: имейте в виду, что яне вносить изменений в игроков или любые их элементы между этими двумя фрагментами

Edit2: определения классов

class Circle():
    pos = (0,0)
    radius = 0.0

class Player():
    name = ""
    model = Circle()
    def __new__(self, Name = "", pos = (0,0), radius = 0):
        name = Name
        model = Circle()
        model.pos = pos
        model.radius = radius

1 Ответ

1 голос
/ 26 апреля 2019

Вы должны использовать __init__ вместо __new__

Вот пример для __init__ и __new__:

class newStyleClass(object): 
    # In Python2, we need to specify the object as the base.
    # In Python3 it's default.

    def __new__(cls):
        print("__new__ is called")
        return super(newStyleClass, cls).__new__(cls)

    def __init__(self):
        print("__init__ is called")
        print("self is: ", self)

newStyleClass()

Код, полученный из https://www.jianshu.com/p/14b8ebf93b73 (Китайский сайт)

...