2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 面向对象(面向对象设计 面向对象编程 实例变量)

面向对象(面向对象设计 面向对象编程 实例变量)

时间:2024-04-21 05:17:49

相关推荐

面向对象(面向对象设计 面向对象编程 实例变量)

概念:

面向对象 ,类.类是抽象的,类具有的所有的公共属性(数据属性,函数属性).对象是具体的

打个比方说,类是学校,而对象是具体的学校(比如清华)

面向对象设计(函数的形式)

def school(name,addr,number):#只有学校能调用该school方法,防止其他类(人啊,物啊等)调用学校的属性def init(name,addr,number):date = {'name':name,'addr':addr, #这里定义了一个函数作用域,防止函数外部访问函数内的变量'number':number,'Zhao_Sheng':Zhao_Sheng}return datedef Zhao_Sheng(name):print('%s学校招生了'%name)return init(name,addr,number)sch1 = school('清华','北京',10000)print(sch1['name'])sch1['Zhao_Sheng']('清华')

面向对象,类变量与实例变量,实例化

类属性分为2种:数据属性与函数属性

对象只有数据属性(通过构造方法__init__设置),没有函数属性.

class school: #class关键字,申明一个类country= 'china' #在类下直接定义变量为类变量,与对象无关def __init__(self,name,addr,munber): #执行class时,__init__函数自动执行,__init__内的变量为实例变量self.name = nameself.addr = addrself.munber = munberdef Zhao_Sheng(self): #self这个参数是实例化时具体的对象print('%s开始招生了'%self.name)sch2 = school('北大','北京',5000) #实例化print(school.__dict__)print(sch2.__dict__) #__dict__查看该类(实例)的变量print(school.country) #以类的形式访问类变量print(sch2.country) #对象访问类变量(作用域:对象访问变量,先找实例变量,找不到,再找类变量(类不能访问实例变量))print(sch2.__dict__) #{'name': '北大', 'addr': '北京', 'munber': 5000}print(sch2.name)sch2.Zhao_Sheng()school.Zhao_Sheng(sch2) #类调用函数(将sch2 传入 self),得到的结果与sch2.Zhao_Sheng()相同

类变量的增删改查 实质是对类的属性字典进行增删改查

class people:name = 'jiang'age = 18def Eat(self):print('真好吃')people1 = people() #实例化时 ()不要忘记加people.sex = 'man' #增加了类的新变量 sex = 'man'print(people1.sex)people.name = 'xuangyuan' #改变类nameprint(people1.name)def Eat(self):#类中的函数也是一个变量,也可以增删改查print('好难吃')people.Eat = Eatpeople1.Eat()del people.name #删除类类变量name

实例也可以对实例变量进行增删改查(与类类似) 如p1.name = 'shengnong',就是将原来的name改为'shengnong'

变量易错点

country = 'china'class guojia:country = 'japan'def __init__(self):#调用实例变量与类变量用 . 号调用, .号调用只作用在该类中print('---->',country) #这个prin函数中的country直接是变量,遵循变量作用域原则 #如果在__init__内添加country,那么打印的就是__init__内的值guojia1 = guojia() #----> 运行构造方法,变量country不是通过.号的形式调用,所以调用全局变量中的countryprint(guojia1.country) #japan

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。