从没有继承的另一个类调用类方法,在python中调用global

时间:2018-04-24 09:45:49

标签: python

我对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)

2 个答案:

答案 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中实现