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()