python中的类与对象

2021/5/12 22:26:03

本文主要是介绍python中的类与对象,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.类的创建
计算机编程的两种思维主要有两种:一种是面向过程的编程,一种是面向对象的编程。面向过程的思维是按问题解决的过程来编程的,程序比较简单,适用于功能比较单一的情况;而面向对象的思维更接近自然语言,编写比较复杂,但延展性比较强。
1.1 类的相关概念
类是指一个具体的类,比如比格犬,英国蓝猫,而实例是指类中某一个具体的对象,比如忠犬八公就是秋田犬这一个大类中的一个具体的对象;而对象是指类与实例的集合。

1.2 类在代码中的具体实现
可以对类进行具体的属性,以及方法:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

class Chinese:
    eyes='black'
    def action(self):
        print('吃饭,用筷子')
i_chinese=Chinese()    #类的实例化 
print(i_chinese.eyes)  #输入类的属性
i_chinese.action()     #实现类的方法

1.3 类的特殊方法
1.3.1 self方法
self会接收实例化过程中传入的数据,当实例对象创建后,实例便会代替 self,在代码中运行。

class Chinese:

    name = '吴枫'  # 类属性name

    def say(self):     #创建实例后,self中调入person
        print(self.name + '是中国人')

person = Chinese()   # 创建Chinese的实例person
person.say()         # 调用实例方法

1.3.2 初始化方法
初始化方法的作用在于:当每个实例对象创建时,该方法内的代码无须调用就会自动运行。

class Chinese:
    def __init__ (self):   #固定属性的初始化方法
        self.mouth = 1  # self.不能丢
        self.eye = 2
    
    def body(self):
        print('我有%s张嘴巴' % self.mouth)
        print('我有%s只眼睛' % self.eye)

person = Chinese()
person.body()
class Chinese:   #不固定属性的初始化方法

    def __init__(self, name, birth, region):
        self.name = name   # self.name = '吴枫' 
        self.birth = birth  # self.birth = '广东'
        self.region = region  # self.region = '深圳'

    def born(self):
        print(self.name + '出生在' + self.birth)

    def live(self):
        print(self.name + '居住在' + self.region)    

person = Chinese('吴枫','广东','深圳') # 传入初始化方法的参数,在创建类时就要传参
person.born()
person.live()

2.类的继承与定制
2.1 类的继承
类的继承的代码为:class B(A) 即为B继承A,A为B的父类。具体代码如下所示:

# 先阅读代码,再运行代码。
class Chinese:
    eye = 'black'

    def eat(self):
        print('吃饭,选择用筷子。')

class Cantonese(Chinese):     #类的继承,继承Chinese的属性
    pass # pass表示'跳过',不执行其他操作

yewen = Cantonese()
print(yewen.eye)
yewen.eat()

函数isinstance(),可以用来判断某个实例是否属于某个类。

# 阅读代码和注释,直接运行

print(isinstance(1,int))
# 判断1是否为整数类的实例
print(isinstance(1,str))

print(isinstance(1,(int,str)))
# 判断实例是否属于元组里几个类中的一个

2.1.1 类的多重继承
一个类,可以同时继承多个类,语法为class A(B,C,D):。和子类更相关的父类会放在更左侧。所以当创建的实例调用属性和方法会优先级是从左到右。

class C0:
    name = 'C0'

class C2(C0):
    num = 2

class C1:
    num = 1

class C3:
    name = 'C3'

class C4(C1,C2,C3):
    pass

ins = C4()
print(ins.name) # 打印出C0
print(ins.num) # 打印出1

2.2 类的定制
子类也可以在继承的基础上进行个性化的定制,包括:
2.2.1 创建新属性、新方法

class Chinese:
    eye = 'black'

    def eat(self):
        print('吃饭,选择用筷子。')

class Cantonese(Chinese):  # 类的继承
    native_place = 'guangdong'  # 类的定制

    def dialect(self):  # 类的定制
        print('我们会讲广东话。')

yewen = Cantonese()
print(yewen.eye)
# 父类的属性能用
print(yewen.native_place)
# 子类的定制属性也能用
yewen.eat()
# 父类的方法能用
yewen.dialect()
# 子类的定制方法也能用

2.2.2 修改继承到的属性或方法
2.2.2.1 直接对属性或者方法进行改写

class Chinese:
    def land_area(self,area):
        print('我们居住的地方,陆地面积是%d万平方公里左右。'% area)

class Cantonese(Chinese):
    # 直接对方法进行重写
    def land_area(self,area):
        print('我们居住的地方,陆地面积是%d万平方公里左右。'% int(area *0.0188))

2.2.2.2 间接对父类的属性或者方法进行改写

class Chinese:

    def land_area(self,area):
        print('我们居住的地方,陆地面积是%d万平方公里左右。'% area)

class Cantonese(Chinese):
    # 间接对方法进行重写
    def land_area(self, area, rate = 0.0188):
        Chinese.land_area(self, area * rate)
        # 直接继承父类方法,再调整参数。

gonger = Chinese()
yewen = Cantonese()
gonger.land_area(960)
yewen.land_area(960)


这篇关于python中的类与对象的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程