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

问题描述

我正在玩 Python 中的类,但不明白如何添加额外的“属性”。例如我在下面提出的简单代码:

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() 函数中定义,该函数在创建类的实例时自动运行。要添加物种属性,您可以将其添加到 init 函数中。

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

给你。这与设置名称或年龄的语法相同。另外,请注意原始帖子中的缩进 - 方法(即 def Birdsit、def Birdfly)都需要比类缩进一次。

class Bird():

    def __init__(self,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()

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...