想要输出I love FishC,..from class{cls.__name__}确输出了<bound method ? of
class D:@classmethod
@property
def __doc__(cls):
return f"I love FishC,..from class{cls.__name__}"
d=D()
d.__doc__ 请求大佬帮助 本帖最后由 isdkz 于 2023-2-5 22:32 编辑
这个输出有问题吗?
>>> class D:
... @classmethod
... @property
... def __doc__(cls):
... return f"I love FishC,..from class{cls.__name__}"
...
>>>
>>> d=D()
>>> d.__doc__
'I love FishC,..from classD'
>>>
输出了 <bound method应该是你漏掉了 @property
>>> class D:
... @classmethod
... def __doc__(cls):
... return f"I love FishC,..from class{cls.__name__}"
...
>>>
>>> d=D()
>>> d.__doc__
<bound method D.__doc__ of <class '__main__.D'>>
>>> class D:
'I love FishC,..from class{cls.__name__}'
@classmethod
@property
def test(self):
pass
d=D()
print(d.__doc__)
每个对象都会有一个__doc__属性,用于描述该对象的作用。在一个模块被import时,其文件中的某些特殊的字符串会被python解释器保存在相应对象的__doc__属性中。比如,一个模块有模块的__doc__,一个class或function也有其对应的__doc__属性。在python中,一个模块其实就是一个.py文件。在文件中特殊的地方书写的字符串就是所谓的docstrings,就是将被放到__doc__的内容。这个“特殊的地方”包括:
1. 一个文件任何一条可执行的代码之前#模块的__doc__
2. 一个类,在类定义语句后,任何可执行代码前#类的__doc__
3. 一个函数,在函数定义语句后,任何可执行代码前#函数的__doc__
举个例子:
#use__doc__ 属性
class MyClass:
'string.'
def printSay():
'print say welcome to you.'
print 'say welcome to you.'
print MyClass.__doc__
print MyClass.printSay.__doc__
#输出结果
string.
print say welcome to you. class D:
@classmethod
@property
def __doc__(cls):
return f"I love FishC,..from class {cls.__name__}"
d=D()
print(d.__doc__)
运行:
I love FishC,..from class D 本帖最后由 歌者文明清理员 于 2023-2-6 11:53 编辑
Def doc代表doc是一个类的方法(method)
D.__doc__是实力d的doc属性/方法
所以他会提示doc是方法(函数)
(打字问题请见谅)
#改成
class D:
__doc__ = ' I love fishc, from class ' + __name__
print(D().__doc__)
或者类部分不动,其他改成
print(D().__doc__()) isdkz 发表于 2023-2-5 22:06
这个输出有问题吗?
第3行@property,但是结果还是显示bound method 18305177067 发表于 2023-2-6 14:36
第3行@property,但是结果还是显示bound method
有截图吗? 歌者文明清理员 发表于 2023-2-6 11:50
Def doc代表doc是一个类的方法(method)
D.__doc__是实力d的doc属性/方法
所以他会提示doc是方法(函数 ...
代码没问题。输出结果为I love FishC,..from class{cls.__name__},其中{cls.__name__}无法改变 18305177067 发表于 2023-2-6 15:21
代码没问题。输出结果为I love FishC,..from class{cls.__name__},其中{cls.__name__}无法改变
很奇怪的问题。在字符串前面加f了吗 歌者文明清理员 发表于 2023-2-6 15:22
很奇怪的问题。在字符串前面加f了吗
看看这个。 The code you posted will result in an AttributeError, because the __doc__ property of the D class is being redefined as a class method decorated with the property decorator.
By using the property decorator, you are indicating that the __doc__ method should behave as a read-only property. However, the __doc__ attribute is already a built-in property of Python classes that provides the docstring for the class.
If you want to define a custom property for the D class, you should give it a different name, such as doc, and use the property decorator to define it:class D:
@property
def doc(self):
return f"I love FishC,..from class{self.__class__.__name__}"
d = D()
print(d.doc) ouyunfu 发表于 2023-2-6 16:54
The code you posted will result in an AttributeError, because the __doc__ property of the D class is ...
我去,6 ouyunfu 发表于 2023-2-6 16:54
The code you posted will result in an AttributeError, because the __doc__ property of the D class is ...
这是故意说英文?
百度百度开始翻译
页:
[1]