Python初始化对象的属性

时间:2018-03-07 12:05:33

标签: python class attributes

如果出现以下问题:我需要在Python中编写一个名为filament的类。对象灯丝具有属性head,还需要具有其他两个属性updown。这就是我所做的:

class filament(object):
    def __init__(self, start):
        self.head = start
        head.up = 1
        head.down = 1
fil = filament(1)

如果我运行它,我会得到:"NameError: name 'head' is not defined"

提前谢谢!

1 个答案:

答案 0 :(得分:2)

根据您的问题

  

你需要对象灯丝有属性头,那也需要   其他两个属性,“向上”和“向下”。

为此,您可以创建一个包含属性updown的类。就是这样的事情。

class Head(object):
    def __init__(self, *args):
        self.up, self.down = args


class filament(object):
    def __init__(self, start):
        self.head = Head(1, 1)

fil = filament()
print(fil.head.up)
print(fil.head.down)

您还可以使用namedtuple模块中的collections来获得相同的行为。

from collections import namedtuple

Head = namedtuple('Head', ['up', 'down'])


class filament(object):
    def __init__(self):
        self.head = Head(1, 1)

fil = filament()
print(fil.head.up)
print(fil.head.down)