• About self and class


    From http://www.runoob.com/python3/python3-class.html

    1. 很多类都倾向于将对象创建为有初始状态的。因此类可能会定义一个名为 __init__() 的特殊方法(构造方法)

    2.  类定义了 __init__() 方法的话,类的实例化操作会自动调用 __init__() 方法。

    3. __init__() 方法也可以有参数,参数通过 __init__() 传递到类的实例化操作上。

    4.  类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。

    5.  self代表类的实例,而非类

    6. self 代表的是类的实例,代表当前对象的地址

    7. 在类的内部,使用 def 关键字来定义一个方法

    8. 与一般函数定义不同,类方法必须包含参数 self, 且为第一个参数

    #!/usr/bin/python3
     
    #类定义
    class people:
        #定义基本属性
        name = ''
        age = 0
        #定义私有属性,私有属性在类外部无法直接进行访问
        __weight = 0
        #定义构造方法
        def __init__(self,n,a,w):
            self.name = n
            self.age = a
            self.__weight = w
        def speak(self):
            print("%s 说: 我 %d 岁。" %(self.name,self.age))
     
    # 实例化类
    p = people('runoob',10,30)
    p.speak()
    

    结果是:

    runoob 说: 10 岁。

    继承

    1. Python 同样支持类的继承,如果一种语言不支持继承,类就没有什么意义

    2.  方法在子类中未找到时,从左到右查找基类中是否包含方法 

        class DerivedClassName(BaseClassName1):

    3.  BaseClassName(示例中的基类名)必须与派生类定义在一个作用域内。

    4.  除了类,还可以用表达式。

         class DerivedClassName(modname.BaseClassName):

    #!/usr/bin/python3
     
    #类定义
    class people:
        #定义基本属性
        name = ''
        age = 0
        #定义私有属性,私有属性在类外部无法直接进行访问
        __weight = 0
        #定义构造方法
        def __init__(self,n,a,w):
            self.name = n
            self.age = a
            self.__weight = w
        def speak(self):
            print("%s 说: 我 %d 岁。" %(self.name,self.age))
     
    #单继承示例
    class student(people):
        grade = ''
        def __init__(self,n,a,w,g):
            #调用父类的构函
            people.__init__(self,n,a,w)
            self.grade = g
        #覆写父类的方法
        def speak(self):
            print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade))
     
     
     
    s = student('ken',10,60,3)
    s.speak()
    

     ==》 ken 说: 10 岁了,我在读 3 年级

    多继承

    #!/usr/bin/python3
     
    #类定义
    class people:
        #定义基本属性
        name = ''
        age = 0
        #定义私有属性,私有属性在类外部无法直接进行访问
        __weight = 0
        #定义构造方法
        def __init__(self,n,a,w):
            self.name = n
            self.age = a
            self.__weight = w
        def speak(self):
            print("%s 说: 我 %d 岁。" %(self.name,self.age))
     
    #单继承示例
    class student(people):
        grade = ''
        def __init__(self,n,a,w,g):
            #调用父类的构函
            people.__init__(self,n,a,w)
            self.grade = g
        #覆写父类的方法
        def speak(self):
            print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade))
     
    #另一个类,多重继承之前的准备
    class speaker():
        topic = ''
        name = ''
        def __init__(self,n,t):
            self.name = n
            self.topic = t
        def speak(self):
            print("我叫 %s,我是一个演说家,我演讲的主题是 %s"%(self.name,self.topic))
     
    #多重继承
    class sample(speaker,student):
        a =''
        def __init__(self,n,a,w,g,t):
            student.__init__(self,n,a,w,g)
            speaker.__init__(self,n,t)
     
    test = sample("Tim",25,80,4,"Python")
    test.speak()   #方法名同,默认调用的是在括号中排前地父类的方法
    

    ==> 我叫 Tim,我是一个演说家,我演讲的主题是 Python

  • 相关阅读:
    Transaction 事务简单详解
    JAVA------6.短信配置并返回
    JAVA------5.启动服务端,客户端发送数据,用户端接收数据,string数组转byte字节,CrcUtil校验
    java------4.根据经纬度排序,并计算距离。。。。。。。。根据地址计算出经纬度
    svn------找不到路径
    java------3.时间戳
    服务器------3.根据经纬度划分区域
    php-------1.ie11配置httpWatch9.1.21
    mysql------1.查询当天的所有数据
    html------1.网页mp3语音展示,点击图片放大,点击图片跳转链接,调表格
  • 原文地址:https://www.cnblogs.com/morganh/p/8136774.html
Copyright © 2020-2023  润新知