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

如何解决如何为 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()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?