Python 有没有其他方法来创建';参数化';班

Python 有没有其他方法来创建';参数化';班,python,class,inheritance,Python,Class,Inheritance,假设我有这样一门课: A类(对象): 前缀=“1” text=“%s)某些文本“%s”前缀 现在我想创建一个前缀已更改的祖先 B(A)类: 前缀=“2” 其他字段=“其他文本” 但这不是我想要的 a=a() b=b() 打印一些文字 打印(b.text)#1)一些文本 我知道为什么。好吧,我知道怎么做了 #现在我们来看一些(并非真正)完全不同的东西。。。 def工厂(前缀): 类元(对象): text=“%s)某些文本“%s”前缀 返回元 A=工厂(前缀=“1”) B类(工厂(前缀=“2”

假设我有这样一门课:

A类(对象):
前缀=“1”
text=“%s)某些文本“%s”前缀
现在我想创建一个前缀已更改的祖先

B(A)类:
前缀=“2”
其他字段=“其他文本”
但这不是我想要的

a=a()
b=b()
打印一些文字
打印(b.text)#1)一些文本
我知道为什么。好吧,我知道怎么做了

#现在我们来看一些(并非真正)完全不同的东西。。。
def工厂(前缀):
类元(对象):
text=“%s)某些文本“%s”前缀
返回元
A=工厂(前缀=“1”)
B类(工厂(前缀=“2”)):
其他字段=“其他文本”
a=a()
b=b()
打印一些文字
打印(b.text)#2)一些文本
…但我觉得这有点难看。 有没有更好的办法做这件事?还是我对丑陋的看法错了

我试过玩mixins,但运气不好


注意:由于某些原因,我无法在构造函数中初始化前缀,我只需要在类定义中参数化属性初始化(
\uuuuu get\uuuuu
方法-)就可以实现类似的功能:

印刷品:

1) some text
2) some text
1) some text
2) some text

您可以将属性
text
设置为属性(这是创建描述符的一种简单方法):


谢谢!我认为值得注意的是,对于python2
prefixed_text
,应该是一个新的样式类。
1) some text
2) some text
1) some text
2) some text
class A(object):
    PREFIX = "1"
    @property
    def text(self):
        return "%s) some text" % self.PREFIX


class B(A):
    PREFIX = "2"
    other_field = "other text"


a = A()
b = B()
print(a.text)  # -> 1) some text
print(b.text)  # -> 2) some text