摘要:本篇介绍了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技术干货 · 答疑解惑 · 职业测评
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号