美文网首页
#类方法,多态类型,类属性

#类方法,多态类型,类属性

作者: 派克_i | 来源:发表于2018-08-19 06:39 被阅读0次

1、类方法

class People(object):

#类方法 classmethod来劲修饰
@classmethod
def getCountry
    return cls.country

p = People()
print(p.getCountry()) #可以通过实例引用
print(People.getCountry()) #可以通过类对象引用

2.类方法还有一个用途就是可以对类属性进行修改

class People(object):
country = 'china'

#类方法,用classmethod来进行修饰
@classmethod
def getCountry(cls):
return cls.country

@classmethod
def setCountry(cls,country):
cls.country = country


p = People()
print p.getCountry() #可以用过实例对象引用
print People.getCountry() #可以通过类对象引用

p.setCountry('japan')

print p.getCountry()
print People.getCountry()

3.多态类型

class duck():
def walk(self):
print('I walk like a duck')
def swim(self):
print('i swim like a duck')

class person():
def walk(self):
print('this one walk like a duck')
def swim(self):
print('this man swim like a duck')


class F1(object):
def show(self):
print 'F1.show'

class S1(F1):

def show(self):
print 'S1.show'

class S2(F1):

def show(self):
print 'S2.show'

def Func(obj):
print obj.show()

s1_obj = S1()
Func(s1_obj)

s2_obj = S2()
Func(s2_obj)

4.类属性

class People(object):
name = 'Tom' #公有的类属性
__age = 12 #私有的类属性

p = People()

print(p.name) #正确
print(People.name) #正确
print(p.__age) #错误,不能在类外通过实例对象访问私有的类属性
print(People.__age) #错误,不能在类外通过类对象访问私有的类属性

5.实例属性(对象属性)

class People(object):
address = '山东' #类属性
def __init__(self):
self.name = 'xiaowang' #实例属性
self.age = 20 #实例属性

p = People()
p.age =12 #实例属性
print(p.address) #正确
print(p.name) #正确
print(p.age) #正确

print(People.address) #正确
print(People.name) #错误
print(People.age) #错误

6.通过实例(对象)去修改类属性

class People(object):
country = 'china' #类属性


print(People.country)
p = People()
print(p.country)
p.country = 'japan'
print(p.country) #实例属性会屏蔽掉同名的类属性
print(People.country)
del p.country #删除实例属性
print(p.country)

* 总结

如果需要在类外修改类属性,必须通过类对象去引用然后进行修改。如果通过实例对象去引用,会产生一个同名的实例属性,这种方式修改的是实例属性,不会影响到类属性,并且之后如果通过实例对象去引用该名称的属性,实例属性会强制屏蔽掉类属性,即引用的是实例属性,除非删除了该实例属性。

相关文章

  • 博学谷第十三天

    时间:2020年1月8日内容:多态、类方法、类属性 多态、类方法、类属性 多态 面向对象的三大特征: 封装将属性和...

  • #类方法,多态类型,类属性

    1、类方法 2.类方法还有一个用途就是可以对类属性进行修改 3.多态类型 4.类属性 5.实例属性(对象属性) 6...

  • python中OOP的类属性和方法与多态

    目录 类的结构 类属性和实例属性 类方法和静态方法 多态 私有属性和私有方法 01. 类的结构 1.1 术语 ——...

  • Java中的多态详解

    一、多态的概念 多态分为类的多态和方法的多态,类的多态就是一个类型可以有不同的表现形态,什么样的类型才会具备多态呢...

  • P9 Dart中的类 对象

    封装,继承,多态 类是由属性和方法组成 /////

  • 面向对象编程

    主要包括: 基本概念 属性私有化(类的封装) 实例属性与类属性 静态方法、类方法、与实例方法 继承与多态 获取对象...

  • C# 多态(抽象类、虚方法、接口)

    多态:让一个对象能够变出多种状态(类型),使用父类类型调用子类中实现的方法。 实现多态的手段:抽象类、虚方法、接口...

  • java基础类-6-反射

    常用类 获取类类型 创建对象 获取属性 获取特定属性 方法和构造方法

  • 继承 多态 封装

    继承 1 子类获得父类的属性和方法 2 子类可以通过重新定义属性和重写方法来改变行为; 多态 编译类型由声明该变量...

  • 多态

    1.多态 1.多态 1.1 要点 多态是方法的多态,不是属性的多态 多态的存在有三个必要条件:继承;方法重写;父类...

网友评论

      本文标题:#类方法,多态类型,类属性

      本文链接:https://www.haomeiwen.com/subject/vygqiftx.html