学习D10

类 2.0

类的调用
class Dog():
	def bark(self):
		print(123)
	
	def show(self):
		self.bark()

在类的外部调用方法 ----> 通过创建实例

dog = Dog()
dog.bark()

在类的内部调用方法 ------> 通过self.方法名 调用

self 就是自己的这个类的地址

Dog().show()
临时属性的添加
实例名.临时属性名 
dog.name = 'asd'

注意点,
实例属性和临时属性的区别
	实例属性是通过当前类创建的实例对象,都具有的
	临时属性 是一个实例具有的 其他实例对象可有可无
	
	在写web的时候,可能会为了方便起见加的
	
	
	
init 和 new 方法

​ new方法创建和返回实例对象

​ init初始化实例

​ new 方法先执行

魔法方法

__ str __

在调用实例对象时会自动调用这个方法,并返回一个字符串

	def __str__(self):
		return '字符串'

return必须有

实例属性的更改

在类的外部修改实例属性

class Dog():
	def __init__(self,leg):
		self.leg = leg 
	def show(self):
		print(self.leg)

dog = Dog(4)
dog.leg = 5
dog.show()

在类的内部修改实例属性

class Dog():
	def __init__(self,leg):
		self.leg = leg 
	def change_leg(self,newleg):
		self.leg = newleg
	def show(self):
		print(self.leg)

dog = Dog(4)
dog.leg = 5
dog.show()
dog.change_leg(6)
dog.show()

继承

继承中子类,子类继承父类的方法与属性

class A():
	def __init__(self):
		self.name = 'AA'

class B(A):
	Pass
	

b = B()
print(b.name)
输出:
AA

子类的方法重写了父类的方法 (就是子类有和父类同名的方法 或属性)

class A():
	def __init__(self):
		self.name = 'AA'

class B(A):
	def __init__(self):
		self.name ='BB'
	

b = B()
print(b.name)
输出:
BB
多继承
class A():
    def __init__(self):
        self.name = 'aa'

class B():
    def __init__(self):
        self.name = 'bb'

class C(B,A):

    def show(self):
        print(self.name)
c = C()
c.show()
输出:
bb


A--->C<----B

若有同样的名字的方法则根据 先继承哪个就打印哪个

多层继承
A

|

|

B

|

|

C

继承的结构不同,但是用起来和多继承差不多 ,若是继承多了影响性能

查找顺序

多继承的查找顺序与继承的类的位置有关

class C(B,A):

def show(self):
    print(self.name)
    
    
print(C.__mro__)
输出
继承类的顺序
继承权限:私有属性与私有方法

私有属性:

class A():
	def __init__(self):
		self.__money = 111111
		
		
		
在属性名前加__  变成私有属性
变成私有属性后 不能被子类调用,也不能被自己的实例所调用,只能在自己的类的内部被调用


私有方法:

class A():
	def __init__(self):
		self.money = 111111
	
	def __show(self):
		print(self.money)
		
		
与私有属性一样 加__ 变私有方法

强行获取私有属性:

print(实例名._类名__属性)

class A():
	def __init__(self):
		self.__money = 111111
	
a = A()
print(a._A__money)
输出:
111111
重写与调用父类的方法

重写: 只要 方法名一样 就行

调用:

class A():
    def aa(self):
        print('aa')

class B(A):
    def aa(self):
    	super(A,self).name()
    	或
    	A.name(self)
        self.name = 'bb'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值