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、属性及方法

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

 
原文地址:https://www.cnblogs.com/yaradish/p/10526129.html