python_小白的修炼笔记_2018/1/4_self和__init__()学习

encoding = utf-8

class Dog:

    def __init__(self, weight, color):
        self.weight = weight
        self.color = color

    def bark(self):
        print(self.color + "的狗在bark")

    def run(self):
        print(str(self.weight) + "kg的狗在run")


dog = Dog(10, "白色")
dog.bark()  # 把dog传给self
print(dog.color)
print(dog.weight)

bigYellow = Dog(20, "黄色")
bigYellow.bark()
bigYellow.run()

方法第一个参数为self,如果在定义方法时没有self参数,在执行dog.bark(),dog会作为实参传入bark()方法内,若没有self则没有形参来接收dog,程序报错

self:
类似于this,java、C++默认有this,python需显示注明self
当某个对象调用其方法时,python解释器会把这个对象作为第一个参数传给self
同理,当某个对象调用其方法时java、C++编译器会把该对象传给并未显式出现在形参列表的this指针
_init_():
类似于构造函数

class A {
    int a;
    String b;               // java中此处定义成员变量

    A (int a, String b){
        this.a = a;         // 构造函数中调用成员变量
        this.b = b;
    }
    void method_1() {
        System.out.println(a);         // 方法中也可以调用成员变量、成员方法
        method_2();                    // 调用时可以直接使用变量名、方法名来调用,不需要显式注明this
    }
    void method_2() {
        ...                
    }                       
}


class A:
                              # 因为,python定义变量时不用关键字来确定变量的类型,而且定义的时候必须赋初值,定义和赋初值合二为一
    def __init__(self, a, b): # 所以,python定义变量和调用变量二者很相似,更显得自由与随意
        self.a = a              
        self.b = b            # 此处,定义成员变量、调用成员变量、合二为一

    def method_1():
        print(self.a)         # 此处,可调用成员变量、成员方法
        self.method_2()       # 调用时不可以直接使用变量名、方法名来调用,需要显式注明self

    def method_2():
        pass
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值