renjian111111 发表于 2021-2-25 08:49:26

萌新提问来啦^<..>^

class Ball:
    def __init__(self,name):
      self.name=name
      def test():
            print(self.name)

    def dayin(self):
      print('打印'+self.name)
init里面可以定义函数吗?{:10_245:}

renjian111111 发表于 2021-2-25 08:52:44

还有还有{:10_245:}
class Person:
      name='小泽玛利亚'
这个为什么不是
class Person:
      def __init__(self,name):
                self.name='小泽玛利亚'
以上这两种有区别吗?

_2_ 发表于 2021-2-25 08:57:34

可以但是没有必要,而且你没办法访问到这个函数,
即 __init__() 里的 test() 函数只能在内部调用

_2_ 发表于 2021-2-25 09:00:41

本帖最后由 _2_ 于 2021-2-25 09:05 编辑

renjian111111 发表于 2021-2-25 08:52
还有还有
class Person:
      name='小泽玛利亚'


本质上没有区别
但还是有一个小细节
第一种方法定义的类,只有实例化之后才能对 name 进行修改
第二种方法定义的类,可以在实例化的时候直接初始化 name

# 第一种
class Person:
      name='小泽玛利亚'
# 如果需要修改需要 2 步
ps1 = Person()
ps1.name = "unknown"

# 第二种
class Person:
      def __init__(self,name):
                self.name='小泽玛利亚'
# 只需一步
ps2 = Person("unknown")

renjian111111 发表于 2021-2-25 09:02:45

_2_ 发表于 2021-2-25 09:00
本质上没有区别
但还是有一个小细节
第一种方法定义的类,只有实例化之后才能对 name 进行修改


谢谢老师
页: [1]
查看完整版本: 萌新提问来啦^<..>^