我希望能够在创建int
/ set
/ str
/ dict
/等新对象时覆盖默认类。
int
的示例:
class MyInt(int):
def __call__(self):
return self ** 2
int = MyInt
a = int('2')
b = 3
print(a)
print(a())
print(int(3)())
print(5()) # Error -> this is what interests me to get working.
有可能吗?
答案 0 :(得分:0)
我认为您必须再次阅读一些5()
标识符约定。
Python标识符:
Python标识符是用于标识变量,函数,类,模块或其他对象的名称。标识符以字母A到Z或a到z或下划线(_)开头,后跟零个或多个字母,下划线和数字(0到9)。
Python不允许在标识符中使用标点符号,如@,$和%。 Python是一种区分大小写的编程语言。因此,人力和人力是Python中的两个不同的标识符。
以下是Python标识符的命名约定:
类名以大写字母开头。所有其他标识符都以小写字母开头。
使用单个前导下划线启动标识符表示该标识符是私有的。
启动带有两个前导下划线的标识符表示一个强私有标识符。
如果标识符也以两个尾随下划线结尾,则标识符是语言定义的特殊名称。
因此,您的代码将因Python
而失败,因为它不会填充class MyInt(int):
def __call__(self):
return self ** 2
int = MyInt
a = int('2')
print(a)
print(a())
print(int(3)())
# Note here the underscore '_'
_5 = int('3')
print(_5)
print(_5())
命名/标识符规则。
否则,您可以将代码破解为:
2
4
9
3
9
输出:
{{1}}