• Geek_b498b7
    2019-09-16
    self.name = name
    self.hp = hp

    老师我反复看了视频还是没搞懂这两行在干什么,能不能再具体解释一下

    作者回复: 这里的self 是表示创建实例本身,self.name = name 相当于把外部的name的值赋给自己的属性self.name;对类做多次实例化之后,每次的self.name都表示“自己”的name属性,而不是“公共”的name

    
     1
  • Mr.C
    2018-12-06
    Self 相当于 java的this吗?

    作者回复: 没错,都是指对象自身

    
     1
  • 龙疯疯
    2020-02-01
    构造函数
    
    
  • 青桐树
    2019-11-04
    老师,请问这样拼写后,会报错 name error,是什么原因呢
    class Player():
        def __init__(self, name, hp):
            self.name = name
            self.hp = hp

        # 定义一个方法
        def print_role(self):
            print('%s:%s' % (self.name, self.hp))

        # 类的实例化
        user1 = Player('tom', 100)
        user2 = Player('jerry', 90)
        user1.print_role()
        user2.print_role()


    Traceback (most recent call last):
      File "C:/Users/admin/PycharmProjects/Practic/class_test.py", line 13, in <module>
        class Player():
      File "C:/Users/admin/PycharmProjects/Practic/class_test.py", line 23, in Player
        user1 = Player('tom', 100)
    NameError: name 'Player' is not defined
    展开

    作者回复: 缩进的问题?

    
    
  • 北极的大企鹅
    2019-06-24
    class Player:
        def __init__(self, name, hp):
            self.name = name
            self.hp = hp

        def print_describe(self):
            print('name is %s ,hp is %s' % (self.name, self.hp))


    user1 = Player('tom', 100)
    user2 = Player('jerry', 100)
    user1.print_describe()
    user2.print_describe()
    class Player:
    后边没让用(),这是为什么
    展开

    作者回复: 可以写(object), 也可以写(其他类)表示继承自某个类;可以参考经典类和新式类的区别

    
    
  • 硕杨Sxuya
    2018-09-29
    编程语言的编译器,应该就是类似将面向对象的书写,翻译整理成面向过程的语言吧(待求证)

    作者回复: 不正确,编译器原指c/c++语言这类编译执行的程序,通过编译器将源代码转换为机器语言,通过链接器之后形成的二进制文件用于执行。
    python是解释语言,不需要编译可以逐条执行,但考虑到效率问题,我们一般把python源代码通过cpython编译为pyc格式的字节码,提高执行效率,也在一定程度上防止反编译还能保护源代码。更多编译器请搜索 编译器及其工作原理

    
    
  • 硕杨Sxuya
    2018-09-29
    self 里面的参数名字感觉会让新手费解,怎么就是 self.name=name 了呢?不就是这样的么?改成 self.name = tempName 或者 self.name = inputName,会更有区分度,对新手更友好。

    现在学得有些懂了,但是越来越不明白,这些教程为什么参数的临时名字或者中间值就非得取和定义的名字一样的呢?这是外国人的思维,人家英文用多了,能区分,但是中国人看到 name = name 的语句,不会太明白两个 name 是不一样的内容,就不能改成中国人的思路的表达么?这可是教学呀,为什么非得弄得这么让新手不清不楚。

    ---

    米饭的举例感觉分奇怪,如果更好一点,感觉可以是“炒饭是炒出来的米”、“白米饭是蒸出来的米”、“盖浇饭是浇了汁的米”。。。。。。都是米做出来的菜肴,都需要加热变成熟的状态的才要,但是使用的烹饪方法是不一样。

    ---

    第一个参数一定是 self,不能缺少。(是为了进行指代么?所有都要有,为什么不能省略呢?这样不就优雅一些么?改了一下代码,把所有的self去掉,也就是不指代了,也还是不行,应该是按照搜索到回答:编译器里面这么设定了,不能随意更改),(但是这个 self 是可以改成其他的,比如都改成 it,也是没有问题的,但是 PEP8 的规定,大家都用 self)
    展开

    作者回复: 这里记得不是编译器决定的self,是习惯。建议在stackoverflow或google搜索,很多中文的解释不正确

    
    
  • 硕杨Sxuya
    2018-09-29
    这一视频对类的解释和语法的前后关系相当棒!之前看书不明白的逻辑梳理通了,谢谢老师。

    原来实例化是这个意思,原来self是这样的指代,哈哈哈,以前就是记忆
    
    
  • Airsaid
    2018-07-15
    老师您好,按照您这节课中关于类的定义:「class 类名(): 」后,ide 会提示:「Python Remove redundant parenthesesa」。那么这个括号是否应该添加呢?

    作者回复: 您好,类如果继承自指定的父类必须使用
    类名称(父类)的形式,即括号和内容必须书写;
    如果没有指定父类默认会继承object类,以下三种写法均不构成语法错误,类名不带括号,类名带空括号,类名(object),为语法整洁建议去掉空括号。

    
    
我们在线,来聊聊吧