如何在 Python 中为 类 添加额外的属性?

How do I add an extra attribute for classes in Python?

我正在 Python 中使用 类,不明白如何添加额外的 'attributes'。例如我在下面提出的简单代码:

class Bird():

    def __init__(self, name, age):
        self.name = name
        self.age=age
    def birdsit(self):
        print(self.name + ' is a bird that is sitting')
    def birdfly(self):
        print(self.name + ' is a bird that is flying')
    def birdwalk(self):
        print(self.name + ' is a bird that is walking')
   

    
myBird=Bird('Blue',4)

print(myBird.name)
myBird.birdsit()
myBird.birdfly()
myBird.birdwalk()

我想简单地添加一个属性,例如。鸟类的类型或性别。我正在自学,我使用的教科书是如此混乱和不知所措,我真的找不到明确的解释。

您究竟想添加什么?您已经知道如何创建一个新的数据属性:简单地分配给它。例如,如果您想要鸟的 movement 属性,只需这样做:

    def birdsit(self):
        self.movement = "sit"
        print(self.name + ' is a bird that is sitting')
    def birdfly(self):
        self.movement = "fly"
        print(self.name + ' is a bird that is flying')
    def birdwalk(self):
        self.movement = "walk"
        print(self.name + ' is a bird that is walking')

如果该属性不存在,则会在您第一次点击其中一项任务时创建。如果它已经存在,赋值只是改变它的值。

在这方面,它就像一个普通的 Python 变量。

属性可以在 init() 函数中定义,当创建 class 的实例时,它会自动 运行。要添加物种属性,您可以在 init 函数中添加它。

def __init__(self, name, age, species):
    self.name = name
    self.age = age
    self.species = species

给你。它与设置名称或年龄的语法相同。此外,请注意原始 post 中的缩进 - 方法(即 def birdsit、def birdfly)都需要比 class.

多缩进一次
class Bird():

    def __init__(self, name, age, type, gender):
        self.name = name
        self.age = age
        self.type = type
        self.gender= gender

    def birdsit(self):
        print(self.name + ' is a bird that is sitting')


    def birdfly(self):
        print(self.name + ' is a bird that is flying')


    def birdwalk(self):
        print(self.name + ' is a bird that is walking')


myBird = Bird('Blue', 4, 'swallow', 'do birds have genders?')

print(myBird.name, myBird.gender, myBird.type)
myBird.birdsit()
myBird.birdfly()
myBird.birdwalk()