类的结构:属性与方法

Python 面向对象编程

Alex Yarosh

Content Quality Analyst @ DataCamp

基础类

class Customer:

# code for class goes here
pass
  • class <name>: 开始类定义
  • class 内的代码需缩进
  • 使用 pass 创建"空"类
c1 = Customer()
c2 = Customer()
  • 使用 ClassName() 创建 ClassName 类的对象
Python 面向对象编程

为类添加方法

class Customer:  

    def identify(self, name):   
      print("I am Customer " + name)
  • 方法定义 = 类内的函数定义
  • 方法定义中第一个参数必须使用 self
cust = Customer()
cust.identify("Laura")
I am Customer Laura
  • 从对象调用方法时忽略 self
Python 面向对象编程
class Customer:  

    def identify(self, name):   
      print("I am Customer " + name)

cust = Customer()
cust.identify("Laura")

什么是 self?

  • 类是模板,如何引用某个对象的数据?
  • self 是类定义中指代具体对象的占位符
  • 应作为任何方法的第一个参数
  • 从对象调用方法时,Python 会自动处理 self

cust.identify("Laura") 将被解释为 Customer.identify(cust, "Laura")

Python 面向对象编程

需要属性

  • 封装:将数据与操作该数据的方法打包
  • 例如,Customer 的姓名应为一个属性

  $$\text{\Large{属性在方法中通过赋值(=)创建}}$$

Python 面向对象编程

为类添加属性

class Customer:  
    # set the name attribute of an object to new_name
    def set_name(self, new_name):

# Create an attribute by assigning a value self.name = new_name # <-- will create .name when set_name is called
cust = Customer()                   # <--.name doesn't exist here yet

cust.set_name("Lara de Silva") # <--.name is created and set to "Lara de Silva"
print(cust.name) # <--.name can be used
Lara de Silva
Python 面向对象编程

旧版

class Customer:  



    # Using a parameter
    def identify(self, name):   
      print("I am Customer" + name)
cust = Customer()

cust.identify("Eris Odoro")
I am Customer Eris Odoro

新版

class Customer:  
   def set_name(self, new_name): 
      self.name = new_name

    # 使用对象自身的 .name
    def identify(self):     
      print("I am Customer" + self.name)
cust = Customer()
cust.set_name("Rashid Volkov")
cust.identify()
I am Customer Rashid Volkov
Python 面向对象编程

Passons à la pratique !

Python 面向对象编程

Preparing Video For Download...