首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python实例:调用未绑定的方法时必须将TypeError作为第一个参数

Python实例:调用未绑定的方法时必须将TypeError作为第一个参数
EN

Stack Overflow用户
提问于 2014-10-15 23:43:09
回答 1查看 12.9K关注 0票数 0

所以我试着写一个基于RPG的终端来学习OOP,所以我写了这样的代码:

代码语言:javascript
运行
复制
class car(object):  #car is the short form of Character
  def __init__(self):
    self.leben = 100
    self.speed = 10
    self.SD = 20
  def attack(self, life):
    #life-= self.SD
    #return life
    pass
  def stats(self):
    print 'Leben: '
    print self.leben
    print 'Geschwindigkeit: ' 
    print self.speed
    print 'Schaden: '
    print self.SD

class wojok(car): 
  def __init__(self):
    super(car.__init__(self)).__init__()
    self.SD = 50


C = wojok()
while True:
  e = raw_input('Befehl: ')
  if e == 'info':
    C.stats()
  elif e == 'stop':
    break

现在我得到了错误:

代码语言:javascript
运行
复制
TypeError: unbound method __init__() must be called with car instance as first argument(got nothing instead)

但是当我尝试将car的一个实例作为第一个参数传递给init时,我得到了错误:

代码语言:javascript
运行
复制
TypeError: unbound method __init__() must be called with car instance as first argument(got instance instead)

我必须使用什么作为第一个参数?

EN

Stack Overflow用户

回答已采纳

发布于 2014-10-15 23:44:52

在……里面

代码语言:javascript
运行
复制
class wojok(car): 
  def __init__(self):

这一行:

代码语言:javascript
运行
复制
    super(car.__init__(self)).__init__()

应该是

代码语言:javascript
运行
复制
    super(wojok, self).__init__() 

但是,如果您想要的是具有不同属性值的不同car实例,只需将它们传递给初始化器(可能具有默认值):

代码语言:javascript
运行
复制
class Character(object):
    def __init__(self, leben=100, speed=10, sd=20):
        self.leben = leben
        self.speed = speed
        self.sd = sd

然后,您可以不带参数实例化Character以获取默认值,也可以指定您想要的内容,即:

代码语言:javascript
运行
复制
default_char = Character()
special_char = Character(sd=100)

注意: python命名约定:对类使用CapCase,对变量和函数使用all_lower,对伪常量使用ALL_UPPER,并且优先使用描述性名称而不是缩写(除非缩写本身就是一个“描述性”名称)。

当然,如果wojok实例应该具有与“标准”Character不同的行为(您省略了它,因为它在这里不相关),子类化是一个合适的解决方案;)

票数 4
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26386644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档