• python -----面向对象


    1、__init__构造方法

    实例化时自动调用

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

    class Myclass:
        """一个简单的实例"""
        # 构造方法 实例化时自动调用
        def __init__(self, realpart, imagpart):
            self.data = []
            self.r = realpart
            self.i = imagpart
    
    x = Myclass(3.0, -4.5)
    type(x)
    print(x.r)
    print(x.i)

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

    从执行结果可以很明显的看出,self 代表的是类的实例,代表当前对象的地址,而 self.class 则指向类。

    self 不是 python 关键字,我们把他换成 runoob 也是可以正常执行的:

    #/use/bin/python3
    
    class myself:
        def test(self):
            print(self)
            print(self.__class__)
    
    x = myself()
    x.test()

    2、类的方法

    在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self, 且为第一个参数,self 代表的是类的实例。

    #/usr/bin/python3
    
    class mydef:
    
        def __init__(self, name, title, address):
            self.n = name
            self.t = title
            self.a = address
    
        def people(self):
            print("name is {}; title is {}; address is {};".format(self.n, self.t, self.a))
    
    p = mydef('yaradish', 'learn', 'shanghai');
    p.people()

    3、继承

    class DerivedClassName(modname.BaseClassName):
    #调用父类的构造方法   其他方法  可以直接使用
    #/usr/bin/python3
    
    class mydef:
        def __init__(self, name, title, address):
            self.n = name
            self.t = title
            self.a = address
        def people(self):
            print("name is {}; title is {}; address is {};".format(self.n, self.t, self.a))
    p = mydef('yaradish', 'learn', 'shanghai')
    p.people()
    
    class two(mydef):
        def __init__(self, name, title, address, height):
            #self.h = height
            #调用父类的构造方法
            mydef.__init__(self,name,title,address)
            self.h = height
        def children(self):
            print("name is {};height is {}".format(self.n, self.h))
    
    c = two('yaradish', 'learn', 'shanghai',"180cm")
    c.children()
    c.people()   #直接使用父类中的方法

    4、多继承

    class DerivedClassName(Base1, Base2, Base3):

    继承的时候需要先将构造函数拿过来

    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()   #方法名同,默认调用的是在括号中排前地父类的方法

    5、属性及方法

    两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问

     
  • 相关阅读:
    怎样用一个3升的杯子和一个5升的杯子装出4升水来(杯子没有刻度)?
    HttpModule和Http Handler (比较与区别)
    Entity Framework 6新特性:全局性地自定义Code First约定
    ASP.NET MVC下的四种验证编程方式
    Json.Net
    JSON 序列化和反序列化——JavaScriptSerializer实现
    XML 命名空间(XML Namespaces)
    使用SQL Server存储ASP.NET Session变量
    ISV 和SI 是什么
    HTML,XML中的转义字符
  • 原文地址:https://www.cnblogs.com/yaradish/p/10526129.html
Copyright © 2020-2023  润新知