Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 一个人在课堂上为班级服务_Python_Oop_Python 3.x - Fatal编程技术网

Python 一个人在课堂上为班级服务

Python 一个人在课堂上为班级服务,python,oop,python-3.x,Python,Oop,Python 3.x,如何在几个子类中使用一个自指示 有如下代码: class User(object): def __init__(self) self.user_session = Session() def wallet_sum(self): self.user_session.get('current wallet sum') class Action(object): def __init__(self):

如何在几个子类中使用一个自指示 有如下代码:

class User(object):

     def __init__(self)
         self.user_session = Session()

     def wallet_sum(self):
         self.user_session.get('current wallet sum')

     class Action(object):

         def __init__(self):
             self.user_session = User.user_session 

         def buy_dog(self):
             self.user_session.post('buy_dog')

     class Listing(object)

         def my_dogs(self):
             self.user_session.get('all_my_dogs')

user = User()

user.Action.buy_dog()

user.Listing.my_dogs()
我想用一个self创建一个用户对象,并用它执行一些操作

我尝试:

user.Action().my_dogs()
AttributeError: type object 'User' has no attribute 'user_session '


user.Action.my_dogs()
TypeError: Action() missing 1 required positional argument: 'self'

您仅在类User的命名空间内定义了类。用户实例并没有神奇的内部类实例,也就是说,在Python中,没有什么比内部类更好的了。因此,在其他类中的类定义通常没有用处

必须为其他类提供对用户对象的显式引用:

AttributeError:类型对象“User”没有属性“User\u session”。您是从self.user\u session=user.user\u session获取此信息的。用户没有名为User\u session的属性。而是一个实例用户拥有

总之,内部类??看看如果只是在类定义中编写一个随机打印语句或def会发生什么。一般来说,这是完全合法和毫无意义的。或者

将它们转换为方法 编写单独的类并将它们组合成一个新类。
把两个班放在另一个班里,你想达到什么目的?回答得好,丹尼尔。对于任何好奇的人,这里有一个嵌套/内部类可能有用的示例:
class User(object):
     def __init__(self)
         self.user_session = Session()
         self.action = Action(self)
         self.listing = Listing(self)

     def wallet_sum(self):
         self.user_session.get('current wallet sum')

 class Action(object):
     def __init__(self, user):
         self.user_session = user.user_session 

     def buy_dog(self):
         self.user_session.post('buy_dog')

 class Listing(object)
     def __init__(self, user):
         self.user = user

     def my_dogs(self):
         self.user.user_session.get('all_my_dogs')

user = User()
user.action.buy_dog()
user.listing.my_dogs()