Python之类、方法、继承

一、类

面向过程的语言:C语言

谷歌:C,Python,Java,Js,Go

1、什么是面向对象?

所谓的面向对象,其实是指:站在上帝的视角下,世界万物一切皆对象,把拥有共同的属性归为一类,这就是class的由来

2、类的定义:class

类的名称首字母必须是大写的

3、类里面有那些东西?

A、属性

B、方法(就是之前学习的函数)

4、类里面的属性以及方法,调用的前提是首先要对类进行实例化处理

object是所有类的对象,可以说是类的祖先

类的内部的show是一个方法,self指的是类本身自己

obj:1、它是一个变量,2、它是类的对象

class Person(object):#创建类,类名称的首字母必须是大写,括号里面是类的基类
def show(self):#创建类中的函数时(self)是特殊参数,必须要写
print("hello") #函数的表达式
obj=Person()# 把类进行实例化 
obj.show() # 用对象调用类Person中的函数

5、类实例化的过程中必须调用__init__方法(初始化),必须要赋值的

构造方法:针对类初始化的时候必须要对构造方法里面的实例属性赋值

__init__() 方法的第一个参数必须是 self

format:格式

class Person(object):
   def __init__(self,name,age):
      self.name=name
      self.age=age
   def show(self):
      print("my name is {0} and my age is {1}".format(self.name,self.age))

obj=Person(name="wp",age=22) # 类的实例化
obj.show()

 

6、数据属性:类似于全局变量

只能通过类名(Person)或者类的对象(obj定义的内容)调用

# obj可以理解为类的对象,也可以将他理解为一个变量,所以obj可以简单的理解为给类定义的对象
# 类中实例方法调用的方式:

# 第一种:对象、方法,也就是类对象调用类的方法。
obj=person(name="wp",age=22)
name="wp",age=22是对实例属性赋值的过程,obj第一个对象。

obj.name()——调用方法,调用的是name的方法。
obj2=person(name="wt",age=22)
name="wt",age=22是对实例属性赋值的过程,obi2第二个对象。
obj2.name()——调用方法,调用的是name的方法

#第二种:类/方法(self,参数值),此方式需要手动给 self 参数传值,也就是类名直接调用类的方法。
obj1=person(name="wp",age=22)
person.name(obj1)

 

class Person(object):
# 数据属性,只能通过类名或者类的对象调用
    city="西安"
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def show(self):
        print("my name is {0} and my age is {1},city is {2}".format(self.name,self.age,self.city))

obj=Person(name="wp",age=22)
obj.show()

# 对数据属性而言,使用类以及类对象调用,内存地址都是一致的
print(id(Person.city))
print(id(obj.city))

 

7、调用方法执行顺序

1、执行构造方法

2、执行真正调用的方法

3、执行析构方法

class Person(object):
   city="西安"
   def __init__(self,name,age):
      self.name=name
      self.age=age
   print("初始化")

   def show(self):
      print("my name is {0} and my age is {1},city is {2}".format(self.name,self.age,self.city))
# 析构方法,价值:清理
   def __del__(self):
      print("清理")
obj=Person(name="wp",age=22)
obj.show()

 

二、方法(method)

1、普通方法

如show(),info()

class Person(object):
   def __init__(self,name,age):
      self.name=name
      self.age=age
   def show(self): #封装一个查看Person属性的函数
      print("name:{0} age:{1}".format(self.name,self.age))

obj=Person(name="wp",age=22) #把类Person实例化为obj
obj.show() #调用方法

 

2、特性方法

只具备只读属性,不能写(这个方法中不能有形式参数)

调用特性方法的时候,没有括号

类内部定义的以@staticmethod装饰的函数,类方法的调用关系可以通过print后的表述得知,输出结果

# 特性方法
class Person(object):
   def __init__(self,name,age):
      self.name=name
      self.age=age
   @property #装饰器
   def show(self):
      return "name:{0} age:{1}".format(self.name,self.age)

obj=Person(name="wp",age=22) #把类Person实例化为obj
print(obj.show) #调用方法

 

3、静态参数

理解为全局变量,但是不能等价于全局变量,静态方法的特点是使用类名来直接调用

静态方法(staticmethod)中不能够调用实例属性

@property装饰器

getInfo:获取信息

# 静态方法
class Person(object):
def __init__(self,name,age):
self.name=name
self.age=age

@staticmethod #装饰器
def show():
return {"name":"wp","age":22}

print(Person.show())

三、继承

1、Java与Python的继承区别

1.1、Python是一个类可以继承N个类

1.2、Java只能继承一个类

2、概念

2.1、基类(父类):被继承的类

2.2、派生类(子类):继承其他的类

在实战中Animal是父类,Person是子类

子类继承父类的实例属性,两种方式:

第一种方式:

super().__init__(name,age)

第一种方式:

Animal.__init__(self,name,age)

self.work=work

3、父类继承子类的内容

1、数据属性

2、实例属性

3、方法

# 父辈继承子类方法
class Animal(object):
address="地球"

def __init__(self,name,age):
self.name=name
self.age=age

def show(self):
return "name:{0},age:{1}".format(self.name,self.age)

class Person(Animal):
def __init__(self,name,age,work):
Animal.__init__(self,name,age)
self.work=work

def show(self):
print("person中的方法")

obj=Person(name="wp",age=22,work="测试")
obj.show()# 类B中本来是没有这个方法的,但是它继承了A类,所以可以直接调用A类中的方法

4、继承的原则

1、从左到右

2、从下到上

前提条件:子类重写了父类的方法,那么调用父类以及子类共同拥有的方法的时候,优先调用子类自己的方法

5、方法重写

当父类的方法没有办法满足子类的需求的时候,那么子类就会重写了父类的方法

# 父辈信息
class
Animal(object): address="地球" def __init__(self,name,age): self.name=name self.age=age def show(self): return "name:{0},age:{1}".format(self.name,self.age)
# 子辈信息
class Person(Animal): def __init__(self,name,age,work): Animal.__init__(self,name,age) self.work=work def info(self): print("来自:{0},信息:{1}".format(self.address,self.show())) def show(self): print("person中的方法") obj=Person(name="wp",age=22,work="测试") obj.show()

 

错误的继承方式

父类与子类在调用时,不可以同时出现在同一方法中,否则会报错

posted @ 2022-04-01 21:18  棠小梨  阅读(65)  评论(0编辑  收藏  举报