我对python完全陌生。我对C ++,Java更熟悉,并且正在尝试执行以下操作:
class A():
def P(self, param):
class B():
def Q(self):
obj = A()
obj.P("printThis")
但是我收到一个错误说:
AttributeError:' NoneType'对象没有属性
我知道使用C ++,Java可以初始化对象并调用方法。我不想创建全局变量,也不想使用继承。我只是想知道是否有办法调用另一个类方法。
我尝试按照以下步骤操作: Using instances from other classes, overriding and separating values of x and y from a Point(x,y) from one class to another,但它没有成功。
提前感谢所有帮助!
在我编写的代码中,A类和B类如下:
class MainPage(webapp2.RequestHandler):
def form(self, display=""):
form = """<!doctype html>
<head>
<meta charset="utf-8"/>
<title> Trial </title>
</head>
<body>
<div>
<b>Enter some text</b>
</div>
<form action="/trial" method="post">
<textarea name="text" placeholder="Enter text here...">%(text)s</textarea>
<div>
<input type="submit" value="Enter">
</div>
</form>
</body>
</html>"""
self.response.write(form % {"text":display})
class ResponseText(webapp2.RequestHandler):
def post(self):
self.response.headers['Content-Type'] = 'text/html'
text_entered = self.request.get('text')
result = self.escape_html(text_entered)
m = MainPage()
m.form(result)
答案 0 :(得分:0)
我修改了你的缩进(我认为你的意思)并做了这个:
class A():
def P(self, param):
print(param)
class B():
def Q(self):
obj = A()
obj.P("printThis")
在我看来工作:
>>> b = B()
>>> b.Q()
printThis
答案 1 :(得分:0)
我认为这取决于Python版本。 我写代码
class A(object):
def __init__(self,a = True):
if a:
self.a = 10
self.b = 20
def b(self):
print('---')
self.dd = 30
class B():
def __init__(self):
A.__init__(self)
def c(self):
print(self.b)
print(self.a)
def d(self):
A.b(self)
b = B()
b.c()
b.d()
print(b.dd)
并且我可以使用python 3.5 <来运行它,但是我不能使用python 2.x
我很好奇如何在不使用继承的情况下在python 2.x中实现