python self如何定义_关于python:为什么我的程序中没有定义self

程序的第一部分定义了类,第二部分通过如下不同的程序调用了类,但第二部分第5行的"typeerror:check_mood()缺少1个必需的位置参数:"self"随机进口

class Animal:

#initialize attributes

def __init__(self,animal_type, name, mood):

self.__animal_type = animal_type

self.__name = name

self.__mood = mood

# set methods

def set_animal_type(self, animal_type):

self.__animal_type = animal_type

def set_name(self, name):

self.__name = name

def set_mood(self, mood):

self.__mood = mood

#check mood

def check_mood(self):

integer = random.randint(1,3)

if integer == 1:

self.__mood ="happy"

elif integer == 2:

self.__mood ="hungry"

elif integer == 3:

self.__mood ="sleepy"

#return methods

def get_animal_type(self):

return self.__animal_type

def get_name(self):

return self.__name

def get_mood(self):

return self.__mood

我做了一个简单的测试程序来运行它:

import Animal

an = input("enter aninal:")

na = input("enter name:")

mo = Animal.Animal.check_mood()

animals = Animal.Animal(an,na,mo)

print(animals.get_animal_type(), animals.get_name(), animals.get_mood())

Animal.Animal.check_mood()您试图调用一个没有实例的实例方法。您需要使用一个实例,例如a = Animal(); a.check_mood()。

我这样做并收到错误"typeerror:'module'对象不可调用"

@helpPlease,它需要是animal.animal()才能在模块中获取类。模块通常命名为小写。

我也试过了,但收到一个错误,说我缺少3个必需的位置参数

@帮帮忙,你自己写了这个代码。它需要三个参数。你把EDOCX1称为2,解释者回答"缺少3个需要的位置参数"。你认为什么是错误的?

我唯一的想法是在我的第二个程序中编写animal.animal(动物类型,名称,心情),但是当这样做时,我收到错误,动物类型没有定义。

您试图在不首先实例化类的情况下运行类方法:

Animal.Animal.check_mood()

除非check_Mood()是类方法或静态方法,否则这将不起作用。

需要实例化类并在实例上运行方法

dog = Animal()

dog.check_mood()

或者使用静态方法或类方法。

静态方法是一个不接收隐式第一个参数(如实例方法中的self)的函数,因此它只是一个正则函数。

类方法是将类本身而不是实例作为其第一个参数接收的函数。这通常只在希望从非标准参数创建类实例时有用。在这种情况下,这不太可能有用,因为您实际上不需要方法中的类。

使用静态方法的示例:

class Animal(object):

@staticmethod

def check_mood():

#yourfunction

一类方法:

class Animal(object):

@classmethod

def check_mood(cls):

#yourfunction

但是,既然你说的是动物的心情,我假设你先实例化一个动物,然后检查它的情绪。

check_mood()是一个实例方法-它需要一个特定的动物来检查它的心情。但是这里

mo = Animal.Animal.check_mood()

你要的是动物类本身的情绪。相反,从__init__这样称呼它:

self.check_mood()

然后,您将删除给出当前错误的行,只向Animal()传递两个参数,并修改def __init__行,使其不再期望情绪(因为动物本身随机产生情绪)。

情绪应该是从3个选项中随机产生的,这就是为什么我在第一部分检查情绪的原因。

请帮助,如果你需要随机生成情绪,你可以在构造函数内完成。在Animal.__init__中调用Animal.check_mood,而不是将mood作为Animal.__init__的参数传递。

我不知道这会在程序中出现在哪里。对不起,我真的很困惑!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值