Python基础入门——类和对象与魔法方法
小职 2021-12-16 来源 :CSDN「嘤嘤906」 阅读 440 评论 0

摘要:本篇介绍了Python基础入门——类和对象与魔法方法,通过具体的内容展现,希望对大家Python的学习有所帮助。

本篇介绍了Python基础入门——类和对象与魔法方法,通过具体的内容展现,希望对大家Python的学习有所帮助。

Python基础入门——类和对象与魔法方法

类和对象

一.对象=属性+方法

一个对象的特征称为"属性",一个对象的行为称为"方法"。


class Turtle:

    color ='green'

    weight =10

    legs =4

    shell =True

    month ='大嘴'

    def climb(self):

        print("我正在很努力的向前爬...")

    def run(self):

        print("我正在飞快的向前跑...")

    def bite(self):

        print("咬死你咬死你!!")

    def eat(self):

        print("有得吃,真满足^_^")

    def sleep(self):

        print("困了,睡觉,晚安,zzz")


二.面向对象编程

1.self:由同一个类可以生成无数对象,当一个对象的方法被调用的时候,对象会将自身的引用作为第一个参数传给该方法。


class Ball:

def setName(self,name):

self.name = name

def kick(self):

print("我叫%s,噢~谁·踢我?!"%self.name)

a =Ball()

a.setName("飞火流星")

a.kick()

我叫飞火流星,噢~谁·踢我?!


2.init():

init()方法称为构造方法。


class Potato:

def __init__(self,name):

self.name=name

def kick(self):

print("我叫%s,噢~谁·踢我?!"%self.name)

p =Potato("土豆“)

p.kick()

我叫土豆,噢~谁·踢我?!


3.私有变量

在变量名或函数名前加上"__",这个函数就会成为私有的了。


class Person:

    __name ="小甲鱼"

p = Person()

p.name

Traceback (most recent call last):

  File "<pyshell#4>", line 1, in <module>

    p.name

AttributeError: 'Person' object has no attribute 'name'


三.继承

1.被继承的类称为基类,父类或超类;继承者称为子类,一个子类可以继承它的父类的任何属性和方法。


class Parent:

    def hello(self):

        print("正在调用父类的方法...")      

class Child(Parent):

    pass


p=Parent()

p.hello()

正在调用父类的方法...

c =Child()

c.hello()

正在调用父类的方法...


2.如果子类中定义与父类同名的方法或属性,则会自动覆盖父类对应的方法和属性。

3.使用super函数

super函数的"超级"之处在于:不需要明确任何基类的名字,它会自动找出所有基类以及对应的方法。


四.多重继承

class Base1:

    def foo1(self):

        print("我是foo1,我在Base1中...")


        

class Base2:

    def foo2(self):

        print("我是foo2,我在Base2中...")


        

class C(Base1,Base2):

    pass


c =C()

c.foo1()

我是foo1,我在Base1中...

c.foo2()

我是foo2,我在Base2中...


五.组合

class Turtle:

    def __init__(self,x):

        self.num =x

class Fish:

    def __init__(self,x):

        self.num =x

class Pool:

    def __init__(self,x,y):

        self.turtle =Turtle(x)

        self.fish =Fish(y)

    def print_num(self):

        print("水池里共有乌龟%d只,小鱼%d条!"%(self.turtle.num,self.fish.num))


六.类,类对象和实例对象

class C:

count =0

a =C()

b =C()

c =C()

print(a.count,b.count,c.count)

0 0 0

c.count+=10

print(a.count,b.count,c.count)

0 0 10

C.count+=100

print(a.count,b.count,c.count)

100,100,10


类中定义的属性是静态变量,类的属性是与类对象进行绑定,并不会依赖任何实例对象。如果属性的名字与方法相同时,属性会覆盖方法。


七.绑定

1.__dict__属性由一个字典组成,字典中仅有实列对象的属性,不显示类属性和特殊属性,键表示的是属性名,值表示属性相应的数据值。


dd.setXY(4,5)

dd.__dict__

('x':4,'y':5)


八.一些相关的BIF

1.issubclass(class,classinfo)

如果第一个参数(class)是第二个参数(classinfo)的一个子类,则返回True,否则返回False。


class A:

pass

class B:

pass

issubclass(B,A)

True

issubclass(B,B)

True

issubclass(B,object)

True

class C:

pass

issubclass(B,C)

False


2.isinstance(object,classinfo)

如果第一个参数(object)是第二个参数(classinfo)的实列对象,则返回True,否则返回False。


issubclass(B,C)

False

b1 =B()

isinstance(b1,B)

True

isinstance(b1,C)

False


3.hasattr(object,name)

attr是属性的意思,hasattr()函数的作用就是测试一个对象里是否有指定的属性。第一个参数(object)是对象,第二个参数(name)是属性名。


class C:

def __init__(self,x=0):

self.x=x

c1=C()

hasattr(c1,'x')

True


4.get(object,name[,default])

返回对象指定的属性值,如果指定的属性不存在,则返回default(可选参数)的值;若没有设置default参数,则抛出异常。

5.setattr(object,name,value)

与getattr()对应,setattr()可以设置对象中指定属性的值,如果指定属性的值不存在,则会新建属性并赋值。

6.delattr(object,name)

与setattr()相反,delattr()用于删除对象中指定的属性,如果属性不存在,则抛出异常。

7.property()

property()的作用是通过属性来设置属性。


class C:

    def __init__(self,size =10):

        self.size =size

    def getSize(self):

        return self.size

    def setSize(self,value):

        self.size =value

    def delSize(self):

        del self.size

    x =property(getSize,setSize,delSize)


魔法方法(1)

一.构造和析构

1.init(self[,…])


class Rectangle:

    def __init__(self,x,y):

        self.x=x

        self.y=y

    def getPeri(self):

        return (self.x+self.y) * 2

    def getArea(self):

        return self.x * self.y

rect =REctange(3,4)

rect.getPeri()

14

rect.getArea()

12


init()方法返回的值一定是None。

2.new(cls[,…])

new()是在一个对象实例化时候调用的第一个方法,它的第一个参数不是self而是这个类(cls),而其他参数会直接传递给__init__()f方法。


class CapStr(str):

    def __new__(cls,string):

        string = string.upper()

        return str.__new__(cls,string)

a =CapStr("I Love FishC.com")

a

'I LOVE FISHC.COM'


3.del(self)

del()方法是当垃圾回收机制回收这个对象的时候调用的。


二.算术运算

add(self,other) 定义加法的行为:+

sub(self,other) 定义减法的行为:-

mul(self,other) 定义乘法的行为:*

truediv(self,other) 定义真除法的行为:/

floordiv(self,other) 定义整数除法的行为://

mod(self,other) 定义取模算法的行为:%

反运算

radd(self,other) 定义加法的行为:+

rsub(self,other) 定义减法的行为:-

rmul(self,other) 定义乘法的行为:*

rtruediv(self,other) 定义真除法的行为:/

rfloordiv(self,other) 定义整数除法的行为://

rmod(self,other) 定义取模算法的行为:%


class New_int(int):

    def __add__(self,other):

        return int(self)-int(other)

    def __sub__(self,other):

        return int(self)+int(other)

a =New_int(8)

b =New_int(9)

print(b+a)

print(a-b) 

1

17       


class Nint(int):

    def __radd__(self,other):

        return int.__rsub__(self,other)

a =Nint(5)

b =Nint(3)

print(a+b)

print(1+b)

8

-2


class Nint(int):

     def __rsub__(self,other):

        return int.__sub__(self,other)

a =Nint(5)

print(3-a)

2




✅  扫码免费获取IT基础课程 · IT技术干货 · 答疑解惑 · 职业测评

Python基础入门——类和对象与魔法方法

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程