ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python中的类与对象

2021-05-12 20:59:39  阅读:184  来源: 互联网

标签:Chinese area python self 对象 print class def


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)

标签:Chinese,area,python,self,对象,print,class,def
来源: https://blog.csdn.net/carnet0758/article/details/116637322

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有