为什么 def 函数中的 sum 没有被计算?

问题描述 投票:0回答:1

我正在尝试通过 OOP 进行继承。我使用 self.level = self.level+1 是一个函数,但结果只是初始值。代码是:

class employee():
    company = "visa"
    ecode = 120

class freelancer():
    company = "fiverr"
    level = 2

    def upgradelevel(self):
        self.level = self.level + 1

class programmer(employee, freelancer):
    name = "rohit"

p = programmer()
k = freelancer()
p.upgradelevel
print(p.level)

我在upgradelevel函数中使用了+1,但当我最后打印p.level时,它只给了我值2。为什么 self.level = self.level +1 没有运行。我希望通过使用升级功能来增加价值

python python-2.7
1个回答
0
投票

也许您已经习惯了 Java,但这不是 Python 中声明实例属性的方式。您需要在

self.level = ...
方法(构造函数)中使用
__init__
来声明实例属性。否则,您将声明静态类属性。

您还需要一些脚手架来支持您的多重继承

class employee():
    def __init__(self):
        super(employee, self).__init__()
        self.company = "visa"
        self.ecode = 120

class freelancer():
    def __init__(self):
        super(freelancer, self).__init__()
        self.company = "fiverr"
        self.level = 2

    def upgradelevel(self):
        self.level = self.level + 1

class programmer(employee, freelancer):
    def __init__(self):
        super(programmer, self).__init__()
        self.name = "rohit"

p = programmer()
k = freelancer()
p.upgradelevel
print(p.level)
© www.soinside.com 2019 - 2024. All rights reserved.