IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python 三大属性 -> 正文阅读

[Python知识库]python 三大属性

封装

class Student:
    def __init__(self,name,age):
        self.name=name
        self.__age=age #如果该变量不希望被访问,加两个"__"
    def show(self):
        print(self.name,self.__age)
stu=Student('张三',20)
stu.show() #类外访问不到age
print(dir(stu))
print(stu._Student__age) #可以通过此格式访问

继承

class Person():
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def info(self):
        print(self.name,self.age)
class Stu(Person):
    def __init__(self,name,age,sno):
        super().__init__(name,age)
        self.sno=sno
class Teacher(Person):
    def __init__(self,name,age,ty):
        super().__init__(name,age)
        self.ty=ty
stu1=Stu('张三',20,'1001')
t1=Teacher('李四',50,'20')
stu1.info()
t1.info()

方法重写

class Stu(Person):
    def __init__(self,name,age,sno): #学号
        super().__init__(name,age)   # 继承格式 super()__init__
        self.sno=sno
    def info(self):         #子类重新定义方法
        super().info()
        print(self.sno)
        
class Teacher(Person):
    def __init__(self,name,age,ty): #教龄
        super().__init__(name,age)
        self.ty=ty
        def info(self):     #子类重新定义方法
        super().info()
        print(self.ty)

#object类

class Student:
    def __init__(self,name,age):
        self.name=name
        self.age=age
#写完这个类,重写__str__方法,用于对这个对象的描述
#分则返回的是地址
    def __str__(self): 
        return f"名字:{self.name}\t 年龄:{self.age}"
stu=Student('zsy', 19)
print(stu)

多态

#多态
class Animal:
    def __init__(self,species,age):
        self.species=species
        self.age=age
    def eat(self):
        print(f"动物在吃饭")
class Dog(Animal):
    def __init__(self,species,age):
        super().__init__(species,age)
    def eat(self):
        print(f"{self.species}在吃饭,已经{self.age}岁了。")

class Tiger(Animal):
    def __init__(self,species,age):
        super().__init__(species,age)
    def eat(self):
        print(f"{self.species}在吃饭,已经{self.age}岁了。")  
def fun(a1):
    a1.eat()
    
an=Animal('动物',0)
an.eat()
dog1=Dog('哈士奇', 5)
fun(dog1)
t1=Tiger('老虎',7)
fun(t1)

特殊方法和特殊属性

class A:
    pass
class B:
    pass
class C(A,B):
    def __init__(self,name,age):
        self.name=name
        self.age=age
x=C('zsy',20)    
print(x.__dict__)   #实例对象的属性字典

print(x.__class__)  #输出对象所属的类
print(C.__bases__)   #C类的父类
print(C.__mro__)     #类的层次对象

重定义类内方法

a=20
b=100
d=a.__add__(b)

class S:
    def __init__(self,name):
        self.name=name
    def __add__(self,other):
        return self.name+other.name
    def __len__(self):
        return len(self.name)
s1=S('张三')
s2=S('李四')
s_=s1+s2
s=s1.__add__(s2)
print(s_,s)  #实现了两个对象的加法运算(再类内编写__add()__特殊的方法)
 
print('**************************************')
lst=[1,23,4,5,6]
print(len(lst))
print(lst.__len__())
print(len(s1))

浅拷贝和深拷贝

class Cpu:
    pass
class Disk:
    pass
class Computer:
    def __init__(self,cpu,disk):
        self.cpu=cpu
        self.disk=disk
        
# 简单类的等号赋值
# 就是把一个变量放到两个对象当中

#浅拷贝,对象包含的组对象内容不拷贝
#因此,源对象和拷贝对象会引用同一个子对象
cpu1=Cpu()
disk=Disk()
comp1=Computer(cpu1, disk)

import copy
comp2=copy.copy(comp1)
print(comp1,comp1.cpu,comp1.disk)
print(comp2,comp2.cpu,comp2.disk)
#不同对象,子对象却是相同的

#深拷贝,使用deepcopy函数,递归拷贝对象中包含的子对象
#源对象和拷贝对象所有的子对象也不相同
print('----------------------------------------')
comp3=copy.copy(comp1)
print(comp1,comp1.cpu,comp1.disk)
print(comp3,comp3.cpu,comp3.disk)
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-10-02 14:37:41  更:2021-10-02 14:39:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:02:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码