zoukankan      html  css  js  c++  java
  • Python 15 面向对象二 类

    类的成员

    1. 类的成员

    class 类名:
      # 方法
      def __init__(self, 参数1, 参数2....):
      # 属性变量
      self.属性1 = 参数1
      self.属性2 = 参数2
      ....
      # 方法
      def method(self):
      pass
    

    2. 类的成员-变量

    1) 实例变量

    2) 类变量(字段)

    class Person:
     # 类变量, 表示所有的该类的对象都共享这个变量.
     	country = "中国"
     
     	def __init__(self, name, num, birthday):
     # 实例变量(字段) 表示你创建的每一个方法都有这三个变量
        self.name = name
        self.num = num
        self.birthday = birthday
    p1 = Person("alex", 18, "1840年06月01日")
    print(p1.name) # alex
    print(p1.country) #中国
    p2 = Person("wusir", 28, "1894年07月25日")
    print(p2.name) # wusir
    print(p2.country) # 中国
    

    通过程序来记录当前类被创建了多少个对象.

    class Foo:
        count = 0
       def __init__(self):
       	Foo.count += 1
    print(Foo.count)   # 0
    Foo()
    Foo()
    Foo()
    print(Foo.count)   # 3
    

    简单的总结:
    实例变量, 给对象用的.
    类变量, 多个对象共享的. 最好是用类名来访问. 这样更加规范

    3. 类的成员-方法

    1. 成员方法(实例方法)
    class Computer:
      # 实例方法(成员方法)
        def play(self):
        	print("我的电脑可以玩")
    c = Computer()
    c.play() # 对象直接去调用实例方法
    
    
    1. 静态方法
      静态方法. 静态方法不需要我们给方法传递self.
      静态方法需要我们在方法上面添加一个@staticmethod
    @staticmethod
    def fare():
      print("我的电脑非常厉害, 可以煎鸡蛋")
    Computer.fare() # 类名可以直接访问的
    c.fare() # 对象也可以访问. 但最好不要这么做. 以便于区分静态方法和实例方法
    

    静态方法和静态变量一样. 一般都是使用类名直接访问和调用的.

    1. 类方法
      类方法类方法在编写的时候, 需要在类方法上面添加@classmethod
    class Computer:
        def play(self):
      		print("我的电脑可以玩")
        @staticmethod
        def fare():
      		print("我的电脑很厉害, 可以煎鸡蛋")
        @classmethod
        def cal(cls, a, b):
     		print(cls)
      		return a+b
    print(Computer.cal(1, 2)) # 此时会自动的把类名传递给类方法的第一个参数
    

    4. 类的成员-属性

    在方法上添加一个@property就可以了

    class Person:
        def __init__(self):
            pass
        @property
        def age(self):
            return 1
    p = Person()
    age = p.age
    print(age)
    

    注意:

    1. 方法参数只能有一个self
    2. 方法上面要写@property
    3. 调用的时候, 我们不需要写括号. 直接当成属性变量来用就可以了.
    4. 这种套路只能取值. 不能设置值

    5. 私有

    1. 私有变量

    class Person:
      	def __init__(self, laopo, mimi):
      	self.__laopo = laopo # 私有的
      	self.__mimi = mi
    alex = Person("这是", "私有的")
    print(alex.__mimi) # 私有的. 谁都不取不到
    

    并不是私有的就一定取不到,有一定的局限性,
    看下面例子:

    class Person:
      def __init__(self, laopo, mimi):
      	self.__laopo = laopo # 私有的
      	self.__mimi = mimi
      def gaosuni(self):
      	print("胡辣汤")
      	return self.__mimi # 返回私有的变量
    alex = Person("炒饭", "更好吃")
    mimi = alex.gaosuni() # 通过这个print(mimi) 可以取到私有的变量
    

    2. 私有方法

    class Person:
     def __init__(self):
     	pass
     def __yue(self):
     	print("我要约会")
     def job(self):
     	print("我要⼯作")
     	self.__yue()
    p = Person()
    p.job()
    
  • 相关阅读:
    asp Excel导入数据库
    Excel导出函数
    asp精简checkbox全选代码
    一个操作读写已存在excel 文件的例子
    asp中实现网络打印功能
    asp操作excel 技术总结
    asp初学者常用的代码
    asp连接各种其他数据库 的方法
    asp得到地址栏里"?"以后的字串
    asp判断今天是星期几
  • 原文地址:https://www.cnblogs.com/NATO/p/9936065.html
Copyright © 2011-2022 走看看