Python高级培训第一次作业

这篇博客介绍了Python的面向对象编程基础,包括类的创建、属性与方法的分离、self关键字的使用、__init__初始化方法以及类的继承。通过实例展示了如何定义和调用类的方法,如get_weight()和drive(),并演示了如何通过super()来调用父类的方法。此外,还讨论了多重继承和使用super()在子类中初始化父类属性的重要性。
class car(object):
    def __init__(self,b_or_s,weight):
        self.type=b_or_s
        self.weight=weight
    def get_weight(self):
        print(self.weight)
    def drive(self):
        if self.type=="big":
            print("Drive the cart carefully")
        elif self.type=="small":
            print("just small car")
        else:
            pass


class bus(car):
    def __init__(self,b_or_s,weight):
        self.type=b_or_s
        self.weight=weight
        self.get_weight()
        self.drive()


car1=car("big",10000)
car1.get_weight()
car1.drive()
car2=bus("small",5000)

print("_________________")

def get_drive(obj):
    obj.drive()

bus_28=bus("small",6000)
bus_906=bus("small",10000)
bus_B32=bus("big",9999999)
print("--------------------------------------")

get_drive(bus_28)
get_drive(bus_906)
get_drive(bus_B32)

作业:

 

类(class)属性   方法

14.1创建类对象:

class 类名称():

    <statement-1>

    ...

    <statement-n>

属性与方法的分离

这里我创建一个简单的类:

class fun:

    i=123456789          <-----属性

   def fun233():            <-----方法

        return 'wuhu'

下面调用i和fun233()的方法也很简单:

j=class()

print(j.i)==123456789

print(j.fun233())=='wuhu'

14.2 self

self指自己

class Myclass():

def fun1(self,bianliang1):

self.wuhu = bianliang1

这个地方就用到了self

self.wuhu其实就是一个变量 在Myclass里可以用self.wuhu再次调用它

在main中可以用Myclass.fun1(number)后用Myclass.wuhu来调用

例:

class Myclass():

def myfun(self,number):

self.wuhu=number

def mysecondfun(self):

print(self.wuhu)

c=Myclass()

c.myfun('ly')#-------------------------------------------------------------------------ly

print(c.wuhu)

c.mysecondfun()#---------------------------------------------------------------------------y

14.3 __init__

__init__魔法函数就是指他给定的class他本身

class Myclass():

def __init__(self,number):

self.wuhu=number

print(self.wuhu)

c=Myclass('ly')#这里不加字符串或字符会报错

结果为输出ly

class里可以将一个class里面的内容继承到另一个class里

class DerivedClassName(BaseClassName):

……

可以记为:class Now(Last):

class Myclass():

__ll='i'

def show_out(self):

print(self.__name)

class MySecondClass(Myclass):

pass

c=MySecondClass()

c.i_show_myself()#------------------------------------------------------ismine

这样MySecondClass()里面将有Myclass里面的属性和方法

可以用class New(Last1,Last2)实现多重继承

14.5.1 init与继承

当子类又用上了__init__时

可以用BaseClassName.__init__(self)重新调用

class Father():

def __init__(self):

self.x=1

class Son(Father)

def __init__(self):

self.y=1

c = Son()

print(c.x)#-----------------------报错

解决方法:

class Father():

def __init__(self):

self.x=1

class Son(Father):

def __init__(self):

Father.__init__(self)

self.y=1

c = Son()

print(c.x)#-----------------------------1

super([子class],self).方法([,attr])#不能加self

Python中子类可以覆盖父类的方法

要想重新调用被覆盖的父类的方法可以用super()调用父类的方法

super()在改变子类的魔法函数时显得尤其的重要

后加:

def __init__(self):

super(base_class_name,self).__init__()

self.wuhu=1

可以既继承父类 又可以设计子类的__init__ 这里子类的self.wuhu被创建了

当然不用非要用__init__

例如

class Father():

    def __init__(self):

        print('父类')

        self.wuhu1=1

    def fun1(self,x=1):

        self.wuhu2=self.wuhu1+x

        print('wuhu2=',self.wuhu2)

        

class Child(Father):

    def __init__(self):

        print('子类')

        super(Child,self).__init__()

    def fun1(self):

        super(Child,self).fun1()

        self.wuhu3=self.wuhu2+self.wuhu1

c1=Child()

c1.fun1()

print(c1.wuhu3)

结果为:

子类

父类

wuhu2= 2

3

class Father():

def __init__(self):

print('父类被调用')

class Child(Father):

def __init__(self):
print('子类被调用')

super(Child,self).__init__()#------------------<=这里不能加self

c1 = Child()#----------------------------------------<=父类被调用

子类被调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值