一个商城网站开发周期,网站做不做账,医疗机构网站以患者做宣传,办公家具网站模板#类的基本知识
#类对象的优点#xff1a;多态#xff0c;封装#xff0c;继承#多态
from random import choice
s[A,B,C,D]
chchoice(s)#从列表中随机选择元素#xff0c;并返回
print(ch)#例#xff1a;序列中的count函数为多态函数…#类的基本知识
#类对象的优点多态封装继承#多态
from random import choice
s[A,B,C,D]
chchoice(s)#从列表中随机选择元素并返回
print(ch)#例序列中的count函数为多态函数不管时字符串类型还是列表类型都可以使用该函数
#很多函数和运算符都是多态的不需要确定对象的具体类型#封装是指向程序中的其他部分隐藏对象的具体实现细节的原则#继承子类超类(基类)
#class语句会在函数定义的地方创建自己的命名空间
_metaclass_type#确定使用新式类可以通过type(对象)来查看实例对象所属的类class People:def getName(self):#self参数为对象自身的引用return self.namedef setName(self,name):self.namenamedef Print(self):print(Hello world! Im %s.%self.name)
personPeople()
person.setName(Li)
print(person.getName())
person.Print()person.nameWang
print(person.getName())
person.Print()#上述self参数方法将它们的参数判定到所属的实例上因此无需显示提供方法和普通函数可以互相绑定如下
def Prints():print(function Prins)
person.PrintPrints#函数绑定不能加括号
person.Print()funcperson.Print#通过变量引用类方法实际上func还是绑定到了对象上因为该方法访问了自身#默认情况下可以在外部访问对象的特性可以通过在方法或特性的名字前面加双下划线可以变为私有的
class stu:def __getId(self):print(you cant see id!)def Myget(self):self.__getId(self)
ststu()
st._stu__getId()#实际上双下划线被解释为单下划线加加类名加私有方法即这样可以访问#from module import *:不会导入前面有下划线的名字class stuff:num0#在类的作用域定义了一个可供所用实例访问的变量def init(self):stuff.num1
xstuff()
x.init()
print(x.num)
ystuff()
y.init()
print(y.num)
#上述xy操作了同一个变量但可以将某个实例的该变量重新绑定到其他值上而屏蔽类范围内的变量#超类在类定义的类名后的圆括号里指定多个该类的超类子类可以扩展超类的定义
class Others:def Output(xNone):print(others data!)
class shape:def init(self):self.block[]def getdata(self,data):return [x for x in data if x not in self.block]
class rect(shape,Others):#多重继承若shapeOthers有同名方法则shape的方法可用而Others的该方法被重写(使其不可访问)def init(self):self.block[A]shshape()
sh.init()
print(sh.getdata([1,2,3]))rrect()
r.init()
r.Output()
print(r.getdata([A,b,c]))#使用内建函数issubclass(x,y)函数可以查看一个类x是不是另一个类y的子类,返回布尔值
print(issubclass(rect,shape))print(rect.__bases__)#使用__base__或__bases__特性可以查看类的基类print(isinstance(r,rect))#使用函数isinstance(x,y)检查x是否为类y的(间接)实例,返回布尔值print(r.__class__)#使用__class__特性检查一个对象属于哪个类 运行结果