python 类属性和 __init__

nangongxiaobai 2020-07-22 02:48:34
eg:
class Learning(Object):
name = 'property'
def __init__(self):
target = 'senior'

如上面的例子,在类中定义属性的时候,直接写的name和在init中的 target,有什么区别?麻烦大神解答一下
...全文
538 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
uswood 2020-08-26
  • 打赏
  • 举报
回复
name是类的属性,是Learning类独有的变量,而__init__是构造函数,在创建实例的时候里面设置的变量会变成实例独有的变量。 类的属性可以通过继承搜索得到。 假设: A = Learning(3) 那么A.target 就等于3 如果你写A.name ,会得到'property',但这不是直接从A里面得到的,是通过继承搜索从类Learning里面找到的,A本身没有这个属性。 PS:你的__init__函数里面变量名要加self,即 self.target = 'target',可以参考楼上的
bradioho 2020-08-25
  • 打赏
  • 举报
回复
name属性是 类learning的类属性,有且仅有一份,所有该类的下的实例共享这个属性,而且可以 Learning.name这么调用;但是init下的target不能 Learning.target这样调用。只能在下面调用声明这个类的实例后,用实例来访问。(实例都可以访问这两个属性)。 然后你的代码有点错,Object前面小写o;init下 target不能直接写,需要在init声明,然后用self来调用target(在定义的方法内部) 给你我测试的代码,你跑一下就全明白了 class Learning(object): name = 'property' def __init__(self, target): self.target = 'ppp' print(Learning.name) p1 = Learning('ddd') print(p1.name) print(p1.target) p1.target = 'ddd' print(p1.target) p1.name = 'TOM' print(p1.name) print(Learning.name)
zhyj_88 2020-07-22
  • 打赏
  • 举报
回复
name是类对象属性 target是__init__函数的局部变量 self.target是实例对象的属性 个人理解,希望对你有帮助。

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧