zoukankan      html  css  js  c++  java
  • python's eithteenth day for me 面向对象——命名空间

    创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些明细称为类的属性。

    而类有两种属性:静态属性和动态属性:

        1,静态属性就是直接在类中定义的变量。

      2,动态属性就是定义在类中的方法。

    类的属性是共享给所有对象的。

    class Person:
        role = 'person'
        def __init__(self,name):
            self.name = name
        def func(self):
            print(666)
    p1 = Person('顾清秋')
    p2 = Person('懒笨呆')
    print(p1.role)      # person
    print(p2.role)      # person
    p1.func()       # 666
    p2.func()       # 666
    #  对象 p1 和 p2是都可以调用 role(静态属性) 和 func 方法的 所以类中的属性是共享给所有对象的。

    创建一个对象(实例)就会创建一个对象(实例)的名称空间,存放对象(实例)的名字,成为对象(实例)的属性。

    对象使用名字:先找自己内存空间中的,再通过类对象指针找到类,再找类的内存空间的。

    对象的内存空间里只存储对象的属性,而不存储方法和静态属性。

    方法和静态属性都存储在类的内存空间中,为了节省内存,让多个对象去共享类中的资源。

    对于静态属性的修改,应该使用  类名.静态属性名直接修改。

    class Person:
        money = 0       # 静态属性
        def __init__(self,name):
            self.name = name
        def work(self):
            print(self.name,'工作,赚了1000块钱')
            Person.money += 1000       #  直接使用 类名.静态属性名
    
    father = Person('father')   # mother 工作,赚了1000块钱
    mother = Person('mother')   # father 工作,赚了1000块钱
    mother.work()
    father.work()
    print(Person.money)     # 2000

    写一个功能,可以统计创建过几个对象:

    class Person:
        count = 0
        def __init__(self):
            Person.count += 1
    p1 = Person()
    p2 = Person()
    p3 = Person()
    print(Person.count)     # 3
    #  创建一个对象(实例)就会执行一次 __init__方法。

    #  圆

    #  半径为(1,3,5,7,9)

    #  计算圆的周长

    #  计算圆的面积

    from math import pi        # 导入 pi 模板
    class Circle:
        def __init__(self,r):
            self.r = r
        def circle_area(self):   # 计算圆面积的函数
            return pi*self.r**2
        def circle_perimeter(self):  # 计算圆周长的函数
            return pi*self.r*2
    
    for i in range(1,10,2):        
        c1 = Circle(i)          # 创建 c1 对象
        print(c1.circle_area())     # 调用圆面积方法
        print(c1.circle_perimeter())    # 调用圆周长方法
  • 相关阅读:
    【刷题】洛谷 P1501 [国家集训队]Tree II
    【刷题】BZOJ 2816 [ZJOI2012]网络
    【刷题】BZOJ 2049 [Sdoi2008]Cave 洞穴勘测
    【刷题】BZOJ 2002 [Hnoi2010]Bounce 弹飞绵羊
    【刷题】洛谷 P3690 【模板】Link Cut Tree (动态树)
    【刷题】BZOJ 2190 [SDOI2008]仪仗队
    【刷题】BZOJ 2005 [Noi2010]能量采集
    【刷题】BZOJ 3262 [HNOI2008]GT考试
    (74)Wangdao.com第十三天_Object 对象_属性描述对象
    (73)Wangdao.com第十二天_JavaScript consol 对象与控制台
  • 原文地址:https://www.cnblogs.com/stfei/p/8796394.html
Copyright © 2011-2022 走看看