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()
posted @ 2018-11-09 17:02  恩佐MIG-U1  阅读(158)  评论(0编辑  收藏  举报