栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python 入门学习 详细知识点+典型例题 /自学笔记(四)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python 入门学习 详细知识点+典型例题 /自学笔记(四)

1一.类和对象 1.对象=属性+方法

封装

self参数

继承             子类后面加()

class A:
    x=520
    def hello(self):
        print("你好,我是A")

        
class B(A):
    pass

b=B()
b.x
520
b.hello ()
你好,我是A

覆盖

class B(A):
    x=880
    def hello(self):
        print("你好,我是B~")
        
b=B()
b.x
880
b.hello()
你好,我是B~

 issubclass()                        检测一个类是否为某个类的子类

issubclass(A,B)
False

多重继承 (访问顺序,从左到右)

class  C( A,B)

组合

class Turtle:
    def say(self):
        print("朋友来了,有酒")

        
class Cat:
    def say(self):
        print("七喜就会喵喵喵~")

        
class Dog:
    def say(self):
        print("哦呼,我是鹿卡,是一只修勾勾~~")

        
class Garden:
    t=Turtle()
    c=Cat()
    d=Dog()
    def say(self):
        self.t.say()
        self.c.say()
        self.d.say()

        
g=Garden()
g.say()
朋友来了,有酒
七喜就会喵喵喵~
哦呼,我是鹿卡,是一只修勾勾~~
  2.构造函数               __init__( ) 方法
class C:
    def __init__(self,x,y)
    
SyntaxError: expected ':'
class C:
    def __init__(self,x,y):
        self.x=x
        self.y=y
    def add(self):
        return self.x+self.y
    def mul(self):
        return self.x*self.y

    
c=C(2,3)
c.add()
5
c.mul()
6
c.__dict__
{'x': 2, 'y': 3}
d=C(4,5)
d.__dict__
{'x': 4, 'y': 5}
d.add()
9

3.重写

未绑定父类

class D(C):
    def __init__(self,x,y,z):
            C.__init__(self,x,y)
            self.z=z
    def add(self):
            return C.add(self)+self.z
    def mul(self):
        return C.mul(self)*self.z

    
d=D(2,3,4)

d.add()
9
d.mul ()
24
3.多态
class Shape:                        定义一个形状类
    def __init__(self,name):        构造函数
            self.name=name            名字
    def area(self):                    面积
        pass

    
class Square(Shape):                    定义一个正方形类,继承shape类
    def __init__(self,length):
        super().__init__("正方形")
        self.length=length
    def area(self):
        return self.length * self.length

    
class Circle(Shape):                    定义一个圆形类,继承shape类
    def __init__(self,r):
        super().__init__("圆形")
        self.r=r
    def area(self):
        return 3.14 * self.r * self.r

    
class Triangle(Shape):                    定义一个三角形类,继承shape类
    def __init__(self,base,height):
        super().__init__("三角形")
        self.base=base
        self.height=height
    def area(self):
        return self.base * self.height / 2

    
s=Square(5)
c=Circle(2)
t=Triangle(3,4)
s.name
'正方形'
c.name
'圆形'
t.name
'三角形'
s.area ()
25
c.area ()
12.56
t.area ()
6.0
class Cat:
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def intro(self):
        print(f"我是一只沙雕猫咪,我叫{self.name},今年{self.age}大了~~~")
    def say(self):
        print("mau~~")

        
class Dog:
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def intro(self):
        print(f"我是一只小狗狗,我叫{self.name},今年{self.age}岁~~~")
    def say(self):
        print("哦吼~~")

        
class Pig:
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def intro(self):
        print(f"我是一只小猪猪,我叫{self.name},今年{self.age}岁~~~")
    def say(self):
        print("oink~~")

        
c=Cat("七喜","三个月")
d=Dog("鹿卡","5")
p=Pig("大肠",3)
def animal(x):
    x.intro()
    x.say()

    
animal(c)
我是一只沙雕猫咪,我叫七喜,今年三个月大了~~~
mau~~
animal(d)
我是一只小狗狗,我叫鹿卡,今年5岁~~~
哦吼~~
animal(p)
我是一只小猪猪,我叫大肠,今年3岁~~~
oink~~
4.鸭子类型  5.私有变量         __x
class C:
    def __init__(self,x):        
        self.__x=x 
    def set_x(self,x):              设置变量
        self.__x=x
    def get_x(self):                获取变量
        print(self.__x)

        
c=C(250)
c.__x
Traceback (most recent call last):
  File "", line 1, in 
    c.__x
AttributeError: 'C' object has no attribute '__x'
c.get_x()
250
c.set_x (520)            修改为520
c.get_x ()                访问
520

__slots__    的限制作用

class C:
    __slots__=["x","y"]            只有两个参数
    def __init__(self,x):
        self.x=x

        
c=C(250)
c.x
250
c.y=520
c.y
520
c.z=666
Traceback (most recent call last):
  File "", line 1, in 
    c.z=666
AttributeError: 'C' object has no attribute 'z'

继承自父类的__slots__属性是不会在子类中生效的,

6. __new__(cls[,......])
class CapStr(str):
    def __new__(cls,string):            字符串类
        string=string.upper()            变为大写
        return super().__new__(cls,string)        

    
cs=CapStr("Python")
cs
'PYTHON'
cs.lower()
'python'
cs.capitalize ()
'Python'

__del__(cls[,......])                销毁方法

class C:
    def __init__(self):
        print("我来了~~")
    def __del__(self):
        print("我走了~~")

        
c=C()
我来了~~
del c
我走了~~
c=C()
我来了~~
d=c
del c            没用了
del d
我走了~~

重生:使用闭包的方法

7.运算方法(各种方法类似)

相加:(要求不是拼接)

class S(str):
    def __add__(self,other):
        return len(self)+len(other)

    
s1=S("english")
s2=S("python")  
s1+s2 
13

 8.

二进制 bin( )

bin(2)
'0b10'
bin(8)
'0b1000'

3|2            按位或
3
3|4
7
3&4            按位与
0
2&3
2
~3            按位取反
-4
~2
-3
3^2            按位异或
1
3^4
7

左移<<      (n位就是乘以2的n次方)         右移>>                   (右移n位就是地板除以2的n次方)

bin(8)
'0b1000'
8>>2        右移2位
2
8>>3
1
8<<2           左移2位
32
8<<3
64

  9.属性访问

hasattr()   检测对象是否有某个属性

getattr()      获取对象中的某个属性值

与之对应的函数(getattribute)
class C:
    def __init__(self,name,age):
        self.name=name
        self.__age=age
    def __getattribute__(self,attrname):
        print("拿来吧你~~")
        return super().__getattribute__(attrname)

    
c=C("猪大肠",18)
getattr(c,"name")
拿来吧你~~
'猪大肠'
拿来吧你~~
拿来吧你~~
c.__C__age
拿来吧你~~

setattr()        设置某个属性的属性值

delattr()        删除某个属性

对应的函数:
class D:
    def __setattr__(self,name,value):
        self.__dict__[name]=value        使用字典
    def __delattr__(self,name):
        del self.__dict__[name]

        
d=D()
d.name="猪大肠"
d.__dict__
{'name': '猪大肠'}
del d.name
d.__dict__
{}

总体的访问:

class C:
    def __init__(self,name,age):
        self.name=name
        self.__age=age                设为私有属性

        
c=C("猪大肠",18)
hasattr(c,"name")
True
getattr(c,"name")                访问属性
'猪大肠'
getattr(c,"_C__age")              访问私有属性                  
18
setattr(c,"_C__age",28)           设置属性变量
getattr(c,"_C__age")
28
delattr(c,"_C__age")                删除
hasattr(c,"_c__age")
False

10.迭代器创建

class Double:
    def __init__(self,start,stop):
        self.value=start-1
        self.stop=stop
    def __iter__(self):
        return self
    def __next__(self):
        if self.value==self.stop:
            raise StopIteration
        self.value+=1
        return self.value*2

    
d=Double(1,5)
for i in d:
    print(i,end='')

    
246810

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1037581.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号