python面向对象编程

时间:2023-02-15 14:23:21

(1)定义类        

class   dog():

  方法列表

(2)创建对象

    对象名= 类名()

    dog=dog()

(4)__init__方法

class Dog():
def __init__(self,legs,color):
self.legs=legs
self.color=color

dog=Dog(4,'黑色')
print(dog.legs)
print(dog.color)

  • __init__()方法,在创建一个对象时默认被调用,不需要手动调用
  • __init__(self)中,默认有1个参数名字为self,如果在创建对象时传递了2个实参,那么__init__(self)中出了self作为第一个形参外还需要2个形参,例如__init__(self,x,y)
  • __init__(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递进去

 

(5)__str__()方法

class Dog():
def __init__(self,legs,color):
self.legs=legs
self.color=color
def __str__(self):
msg="我的狗"+str(self.legs)+self.color
return msg

dog=Dog(4,'黑色')
print(dog)

我的狗4黑色
  • 当使用print输出对象的时候,只要自己定义了__str__(self)方法,那么就会打印从在这个方法中return的数据

 

(6)单继承、重写父类的方法、调用父类的方法

a.继承
class Cat():
def __init__(self,name,color='白色'):
self.name=name
self.color=color
def run(self):
print("%s在跑"%self.name)

class Bosi(Cat):
def SetnewName(self,name):
self.name=name
def eat(self):
print("%s在吃"%self.name)

bs=Bosi("印度猫")
print(bs.name)
print(bs.color)
bs.eat()
bs.SetnewName("波斯猫")
bs.run()


印度猫
白色
印度猫在吃
波斯猫在跑

  • 子类在继承的时候,在定义类时,小括号()中为父类的名字
  • 父类的属性、方法,会被继承给子类

b.重写父类方法

class dog():
def sayhello(self):
print("sayhello.....1")

class alasijia(dog):
def sayhello(self):
print("sayhello.....2")

erha=alasijia()
erha.sayhello()

sayhello.....2

c.调用父类的方法
class dog():
def setname(self,name):
self.name=name

class alasijia(dog):
def getname(self,name):
super().setname(name)


初始化化调用示例

class B(A):   
  def __init__(self):       
  super().__init__()