gpt4 book ai didi

python - 如何从基类中获取派生类名

转载 作者:IT老高 更新时间:2023-10-28 22:02:51 29 4
gpt4 key购买 nike

我有一个基类 Person 和派生类 ManagerEmployee。现在,我想知道创建的对象是 Manager 还是 Employee

此人如下:

from Project.CMFCore.utils import getToolByName
schema = getattr(Person, 'schema', Schema(())).copy() + Schema((TextField('FirstName', required = True, widget = StringWidget(label='First Name', i18n_domain='project')), TextField('Last Name', required = True, widget = StringWidget(label='Last Name', i18n_domain='i5', label_msgid='label_pub_city'))
class Manager(BaseContent):
def get_name(self):
catalog = getToolByName(self, "portal_catalog")
people = catalog(portal_type='Person')
person={}
for object in people:
fname = object.firstName
lname = object.lastName
person['name'] = fname+' '+ lname
# if the derived class is Employee then i would like go to the method title of employee and if its a Manager then go to the title method of Manager
person['post'] = Employee/Manager.title()
return person

对于经理和员工来说,他们是一样的(员工也是相似的,但有些不同的方法)

from Project.Person import Person
class Manager(Person):
def title(self):
return "Manager"

对于员工,标题是“员工”。当我创建 Person 时,它是 ManagerEmployee。当我得到 person 对象时,类是 Person,但我想知道它是来自派生类“Manager”还是“Employee”。

最佳答案

我不知道这是否是您想要的,以及您希望它实现的方式,但这是一个尝试:

>>> class Person(object):
def _type(self):
return self.__class__.__name__


>>> p = Person()
>>> p._type()
'Person'
>>> class Manager(Person):
pass

>>> m = Manager()
>>> m._type()
'Manager'
>>>

优点:_type 方法只有一个定义。

关于python - 如何从基类中获取派生类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11408148/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com