我是Python新手并尝试创建基于文本的冒险游戏并遇到一些问题。下面的代码是我目前所困的代表。
class A(object):
def funct1(self):
pass
def funct2(self):
pass
class B(object):
def funct1(self):
pass
我试图从B类funct1链接到A类funct2,这是不成功的。虽然我理解一个类的每个函数中的函数之间的链接(例如self.funct2()
),但是对于我来说,不同类中的函数之间的链接仍然不清楚。
我尝试使用def __init__
,但我不确定它在这种情况下是如何适用的。任何帮助将不胜感激!
答案 0 :(得分:0)
如果您想使用B类A中的方法,则需要使用inheritance
class A(object):
def funct1(self):
print("Hello from func1")
def funct2(self):
print("Hello from func2")
class B(A):
pass
b = B()
b.funct2()
b.funct1()
Hello from func2
Hello from func1
现在要调用类B
中的继承方法,只需使用self.func1(), self.func2()..
如果您希望func1在类B
中的行为方式不同,则可以覆盖该方法:
class A(object):
def funct1(self):
print("Hello from A class func1")
def funct2(self):
print("Hello from A class func2")
class B(A):
def funct1(self):
print("overridden method")
b = B()
b.funct2()
b.funct1()
Hello from A class func2
overridden method
如果您希望实例具有name属性,请在__init__
方法中创建属性:
class A(object):
def __init__(self, name):
self.name = name
def funct1(self):
print("Hello from A class func1")
def funct2(self):
print("Hello from A class func2")
class B(A):
def funct1(self):
print("overridden method")
b = B("bar")
print(b.name)
bar
我提供的python-practice-book链接中有一个很好的教程,我建议你看一下。
答案 1 :(得分:0)
访问其他类中的函数在python中非常简单,只需要声明ClassName即可。 functionName() 这是一个例子:
class A(object):
def funct1(self):
pass
def funct2(self):
pass
class B(object):
def funct1(self):
pass
B.funct1()
Classname.functionName(对象)
答案 2 :(得分:-1)
我希望我能理解你的问题。听起来您正试图从A.func1()
致电B.func1()
。此问题的问题是,除非您使用继承,否则类A
没有关于B
的信息。
您可以利用继承,但另一个解决方案是让B.func1()
接受A
的实例作为参数。
有关此类互动的示例,请考虑会计师如何与发票进行互动。发票不会从会计中继承任何内容,反过来也是如此。会计师需要做的就是取得发票并激活Pay
方法。
class Invoice():
amount_due = 100
def pay(self, payment_method):
pass
class Accountant():
def pay_invoice(self, invoice, payment_method):
if invoice.amount_due > 0:
invoice.pay(payment_method)
Accountant
课程不需要了解Invoice
课程,除了Pay
方法需要payment_method
。只要有人这样做,Invoice
课程并不关心谁付钱。