Python中参数在类中的使用

2024-04-18 10:16:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Codecademy上学习Python时遇到了这个问题,代码如下:

class Employee(object):
    def __init__(self, name):
        self.name = name
    def greet(self, other):
        print "Hello, %s" % other.name

class CEO(Employee):
    def greet(self, other):
        print "Get back to work, %s!" % other.name

ceo = CEO("Emily")
emp = Employee("Steve")
emp.greet(ceo)
ceo.greet(emp)

我想知道这里的other.name是什么意思?你知道吗

self.name = name可以解释为实例对象的成员变量self.name被设置为等于name,所以我们可以说self是一个实例,name是它的属性,对吗?你知道吗

“Emily”不是由ceo = CEO("Emily")分配给参数other,而“Steve”不是由emp = Employee("Steve")分配给name吗?怎么能这样用呢?你知道吗


Tags: 实例nameselfdefemployeeclasssteveother
1条回答
网友
1楼 · 发布于 2024-04-18 10:16:59

类属性

other.name是作为参数传递给greet()方法的other参数的任何类实例的name属性。你知道吗

扩展示例

class Employee(object):
    def __init__(self, name):
        self.name = name
    def greet(self, other):
        print "Hello, %s" % other.name

class CEO(Employee):
    def greet(self, other):
        print "Get back to work, %s!" % other.name

ceo = CEO("Emily")
emp = Employee("Steve")

print emp.name, 'greets', ceo.name
emp.greet(ceo)
print
print ceo.name, 'greets', emp.name
ceo.greet(emp)

Steve greets Emily
Hello, Emily

Emily greets Steve
Get back to work, Steve!

进一步继承说明(编辑)

CEO继承由Employee定义的所有内容(如name属性),但可以更改内容(如更改greet()方法)。你知道吗

事情是这样的:

  1. “Emily”被分配给CEO类的name属性,当该类的实例被创建为ceo

    ceo = CEO("Emily")
    
  2. Employee类的实例被创建为emp时,name类的name属性被分配给Employee

    emp = Employee("Steve")
    
  3. 在实例的greet()调用中,整个其他类实例通过该方法的other参数传递给它。你知道吗

    emp.greet(ceo)
    

    这将所有的ceo传递到emp.greet(),这样emp.greet()就可以从ceo访问一些东西,在本例中,就是ceoname

  4. ceo实例重复greet()调用

    ceo.greets(emp)
    

我希望这是清楚的,read about and play和一些other examples类。你知道吗


:这就是__init__()方法的用途。__init__()可以接受任何参数、赋值或运行任何代码。每当创建类的实例时都会调用它。

相关问题 更多 >