类方法与类属性

类方法的存在即为了修改类属性。

代码示例:

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

    #类方法
    @classmethod
    def setNewAddress(cls):
        cls.address = "内蒙古"

    #可以通过类名的方式来获取类属性
    #但是不能通过类名获取实例属性

    #类对象,可以直接调用类属性,也可以直接调用类方法
    #但是类对象,不允许调用实例属性,并且也不允许调用实例方法

    #如果是一个实例对象
    #它可以获取实例属性和类属性的值,但是只能修改实例属性,不能修改类属性
    #他还可以调用实例方法和类方法
xiaoming = People()
xiaoming.setNewAddress()
print(People.address)

执行结果:
内蒙古

代码示例2:

class Animal(object):
    def __init__(self, name = "动物", color = "白色"):
        self.name = name
        self.color = color

class Horse(Animal):
    horseNum = 0            #类属性

    def __init__(self, name, color = ""):
        super().__init__(name)
        self.setHorseNum()

    @classmethod
    def setHorseNum(cls):
        cls.horseNum += 1

bailongma = Horse("白龙马")
print(bailongma.name)
print(bailongma.color)
print(bailongma.horseNum)

chituma = Horse("赤兔马")
print(chituma.name)
print(chituma.color)
print(chituma.horseNum)

执行结果:
白龙马
白色
1
赤兔马
白色
2

  

时间: 2024-10-16 17:01:19

类方法与类属性的相关文章

python 类属性 实例属性 类方法 实例方法 静态方法(转载)

本文是转载,纯粹是为了方便后面自己查看,建议还是看原文的:http://www.cnblogs.com/dolphin0520/archive/2013/03/29/2986924.html 一.先来谈一下类属性和实例属性 在前面的例子中我们接触到的就是类属性,顾名思义,类属性就是类对象所拥有的属性,它被所有类对象的实例对象所共有,在内存中只存在一个副本,这个和C++中类的静态成员变量有点类似.对于公有的类属性,在类外可以通过类对象和实例对象访问. class people: name = 'j

类的自动加载、类属性类方法的调用

类的自动加载: 方法一:spl_autoload_register(function($className){ require $className.".php"; }); $imooc = new Imooc(); 方法二: 类方法和类属性的调用: 原文地址:https://www.cnblogs.com/weixiaofantasy/p/9830227.html

Python3.x基础学习-类--类属性和实例属性

类属性和实例属性 定义: 实例属性:在实例对象中定义的属性类属性: 在类对象中定义的属性,并且多个实例对象共享一份类属性类属性使用方式:类名.类属性,也可以使用 对象.类属性注意: 1.不可变类型:对象名.属性名=属性值 是给对象添加属性,而不是进行修改 2. 可变类型:如果对象是修改可变数据类型变量中的数据,是真正的修改如果是重新给可变数据类型变量赋值,这是给该对象添加属性 class Dog: pass dog=Dog dog.name = '旺财' print(dog.name) dog.

django之创建第4-2个项目-访问class类属性和类方法

1.修改index <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>django之创建第4-2个项目</title> </head> <body> <h1>hello,{{test.name}}</h1> <!--模板 变量用变量定义--> &l

Python:类属性,实例属性,私有属性与静态方法,类方法,实例方法

From: http://www.cnblogs.com/pengsixiong/p/4823473.html 属性分为实例属性与类属性 方法分为普通方法,类方法,静态方法 一:属性: 尽量把需要用户传入的属性作为实例属性,而把同类都一样的属性作为类属性.实例属性在每创造一个类是都会初始化一遍,不同的实例的实例属性可能不同,不同实例的类属性都相同.从而减少内存. 1:实例属性: 最好在__init__(self,...)中初始化 内部调用时都需要加上self. 外部调用时用instancenam

java个人学习笔记:类属性,类方法

类属性作为该类各个对象之间共享的变量.在设计阶段,分析哪些类属性不因对象的不同而改变,将这些属性设置为类属性.相应的方法设置为类方法. 如果方法和调用者无关,这样的方法通常被称为类方法,由于不需要创建对象就可以调用类方法,从而简化了方法的调用.   static关键字 在java类中,可用static修饰属性,方法,代码块,内部类 被修饰后成员具备以下特点: 随着类加载而加载 优先于对象存在 修饰的成员,被所有对象所共享 访问权限允许时,可不创建对象,直接被类调用   类方法 可以用类名.方法名

python3 速查参考- python基础 8 -&gt; 面向对象基础:类的创建与基础使用,类属性,property、类方法、静态方法、常用知识点概念(封装、继承等等见下一章)

基础概念 1.速查笔记: #-- 最普通的类 class C1(C2, C3): spam = 42 # 数据属性 def __init__(self, name): # 函数属性:构造函数 self.name = name def __del__(self): # 函数属性:析构函数 print("goodbey ", self.name) I1 = C1('bob') #-- Python的类没有基于参数的函数重载 class FirstClass: def test(self,

python__基础 : 类属性,类方法,静态方法

类属性  定义在类里面,方法外面的属性,一般属于这个类,如下面的 num 就是类属性: class Test: num = 0 类属性用 实例.类属性   或者 类.类属性 都可以访问, 如 a = Test()  用 a.num 可以访问 ,但是如果这个实例有一个实例属性 self.num 那么这样访问的其实是 self.num , 所以一般用 类.属性 即这样 Test.num 访问 类方法, 类方法是属于这个类的方法,定义方式为 前面加上装饰器 @classmethod 且第一个参数传递的

类属性和类方法

当一个属性.方法被static修饰的时候,就叫做类属性.类方法,又叫做静态属性.静态方法 .没有被static修饰的属性,就叫对象属性.对象方法,又叫实例属性.实例方法和非静态属性.非静态方法. 当一个属性被声明成类属性,那么所有的对象,都共享一个值,所有对象都可以修改这个值,一经修改前面的值将会被丢弃. 而对象属性,每个对象的对象属性的值都互不影响,修改一个对象的对象属性,另一个对象的对象属性不变. 访问类属性有两种方式,访问即修改和获取. 1. 对象.类属性/类方法 2. 类.类属性/类方法