报错cannot assign to function call,无法运行
class D:def __set_name__(self,owner,name):
self.name=name
def __get__(self,instance,owner):
print("get~")
return instance.__dict__.get(self.name)
def __set__(self,instance,value):
print("set~")
instance.__dict__(self.name)=value
class C:
x=D('x')
请求大佬帮忙看看
D又没有定义__init__函数,不能像函数一样直接调用 tommyyu 发表于 2023-2-3 21:05
D又没有定义__init__函数,不能像函数一样直接调用
报错的是第9行的instance显示cannot assign to function call 18305177067 发表于 2023-2-3 21:19
报错的是第9行的instance显示cannot assign to function call
有好几个错误{:10_282:}
1. __init__未定义
2. 缩进问题
3. 第九行,__dict__后面的(self.name)改成class D:
def __init__(self, name):
self.name = name
def __set_name__(self,owner,name):
self.name=name
def __get__(self,instance,owner):
print("get~")
return instance.__dict__.get(self.name)
def __set__(self,instance,value):
print("set~")
instance.__dict__=value
class C:
x=D('x')
本帖最后由 isdkz 于 2023-2-3 21:28 编辑
18305177067 发表于 2023-2-3 21:19
报错的是第9行的instance显示cannot assign to function call
class D:
def __init__(self, name):
self.name = name # 如果没有 __init__,在实例化的时候是不能赋初值的
def __set_name__(self,owner,name):
self.name=name
def __get__(self,instance,owner):
print("get~")
return instance.__dict__.get(self.name)
def __set__(self,instance,value):
print("set~")
instance.__dict__=value # 因为 __dict__ 是一个字典,无法调用,所以应该用 [],而不是 ()
class C:
x=D('x')
c = C()
print(c.x) 他报的错是syntaxerror语法错误,虽然没有主程序调用,但是python是先检查你的语法的,它发现你副职给了函数get,于是报错。这行instance.__dict__ = value,@isdkz已经指出来了
syntax(语法)检查之后才检查你的代码,它发现你没有__init__,于是他又会爆错
主程序加上:print(C().x)
(错别字请见谅)
页:
[1]