#举例说明如何定义类和实例化所定义的类#定义类class People(object): name = "默认" age = "默认" def __init__(self,name,age): self.name = name self.age = age def pprint(self): print("名字是:%s"%(self.name)) print("年龄是:%s"%self.age) def diaoyongpprint(self): self.pprint() def diaoyongclass(self): print ("调用类方法") self.Classdiaoyongpprint() @classmethod def Classdiaoyongpprint(cls): print ("类方法调用对象方法") cls.pprint(cls) def classp(self): print ("hahaha")#实例化person = People('zzz','18')person.pprint()# 定义类方法时self参数名可以被命名成其他名字吗?#可以改变,不管是什么名字都代表当前对象本身class Change(object): def __init__(you, name, age): you.name = name you.age = age def pprint(you): print("名字是:%s" % (you.name)) print("年龄是:%s" % you.age)change = Change("change","0")change.pprint()# 如何判断一个对象属于哪个类class Animal(object): def __init__(self, name, age): self.name = name self.age = age def pprint(self): print("名字是:%s" % (self.name)) print("年龄是:%s" % self.age)cat = Animal('cat','2')cat.pprint()print (type(person))print (type(cat))# 如何判断两个变量指的是同一对象#答:直接判断两者相不相等即可a = catb = catprint (a==b)b = personprint (a==b)a.pprint()b.pprint()# 举例说明如何定义类属性class A: name = "python课程-属性"a = Aprint(a.name)# 可以为对象直接添加新属性吗?#答:可以person.addr = '北京'print (person.addr)# 1. 对象方法可以调用对象方法?#答:可以person.diaoyongpprint()# 2. 对象方法可以调用类方法?#答:可以person.diaoyongclass()# 3. 类方法可以调用对象方法?# #答:可以People.Classdiaoyongpprint()# 4. 定义类方法时必须加特别的装饰器?#答:对,加 @classmethod# 5. 对象方法可以通过类名dot形式访问?#答:可以People.pprint(People)People("aa","45").pprint()# 6. 类方法可以通过对象名dot形式访问?#答:可以People.Classdiaoyongpprint()# 7. 初始时可以通过对象属性方法类属性吗?如果可以其前提条件是什么?#答:不可以# 8. 每个类属性都有一个对应的同名对象属性?#答:对# 9. 单下划线的对象属性表示“私有”成员?#答:“单下划线开头” 的成员变量叫做保护变量,意思是只有类对象和子类对象才能访问到这些变量。# 10. 所有双下划线对象属性都表示“私有”成员#答:“双下划线开头” 的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。# 举例(animal,dog)说明如何定义继承类class Dog(Animal): def __init__(self,name,age,launch): # Animal.__init__(self,name,age) super(Dog, self).__init__(name,age) self.launch = launch def pprint(self): Animal.pprint(self) print ("食物;%s"%self.launch)# 举例说明super函数的使用# 1. 类方法可以继承?dog = Dog("哈士奇", "2", "肉")# 2. 子类不可以重新定义父类的同名方法?#可以dog.pprint()# 3. 多态是指儿子可以表现父亲的“同名行为”?#答:多态的好处就是,当我们需要传入更多的子类时,我们只需要继承父类的方法就可以了,# 而同名方法既可以不重写(即使用Animal的),也可以重写一个特有的# 举例说明多态的作用#答:多态的好处就是,当我们需要传入更多的子类时,我们只需要继承父类的方法就可以了,# 而同名方法既可以不重写(即使用Animal的),也可以重写一个特有的# 类嵌套举例说明class parent: def __init__(self): self.name = 'parent' def getname(self): print(self.name) class child: def __init__(self): self.name = 'child' def getname(self): print(self.name)child = parent.child()child.getname()# 通过对象名调用方法举例person.pprint()def add(a,b): return a+bdef sub(a,b): return a-bclass AA(object): x=add(3,4) y=sub(3,9) @classmethod #类方法 def printa(cls): print(cls.x,cls.y) @staticmethod #静态方法 def printb(a,b): print(a+b) print(AA.x) def printc(self,a,b): #普通方法 print(a+b)a=AA()print(AA.x)AA.printa()AA.printb(6,7)AA.printc(AA,6,8)a.printa()a.printb(6,7)a.printc(6,8) #error# 静态方法可以访问类属性吗?#答:可以# 普通方法可以通过对象调用吗?#答:可以# 静态方法可以通过对象调用吗?#答:可以
总结 以上是内存溢出为你收集整理的python基础-类全部内容,希望文章能够帮你解决python基础-类所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)