Ⅰ python如果一个父类已经实例化了,现在想新建一个子类,给父类的这一个实例添加两个属性,如何实现
class People(object):
def __init__(self, name, age):
self.name = name
self.age = age
class worker(People):
def __init__(self,name,age,salary):
super(worker,self).__init__(name,age)
self.salary = salary
tom = People("Tom", 22)
print type(tom).__name__
#not a safe way, but no new object
tom.__class__=worker
print type(tom).__name__
tom.salary = 250
print tom.salary
#safe way, but create a new object
workerTom = worker("Tom", 22, 200)
tom.__dict__ = workerTom.__dict__
print type(tom).__name__
print tom.salary
Ⅱ python3 类和实例的作用
Python调用其他类的方法时候要注意引用的时是静态方法还是类方法。意思就是调用其它类的方法(不管是不是引用别的包,如果引用保证引用路径正确,同时分清楚是import引用还是from……import引用的)。如果是引用类的静态方法直接点取方法就可以了,例如:B.b.fun()。如果是类方法就要新建一个类的实例才能引用类的方法,例如:B.b().fun(),其实就是看这个类方法有没有self(有的地方也用cls)这个参数。有的话就要通过类的实例引用,没有的话就直接引用
Ⅲ python中类的实例对象的理解总结
9.3.3. 实例对象
现在我们可以用实例对象作什么?实例对象唯一可用的操作就是属性引用。有两种有效的属性名。
数据属性 相当于 Smalltalk 中的“实例变量”或 C++ 中的“数据成员”。和局部变量一样,数据属性不需要声明,第一次使用时它们就会生成。例如,如果 x 是前面创建的 MyClass 实例,下面这段代码会打印出 16 而在堆栈中留下多余的东西:
x.counter = 1
while x.counter < 10:
x.counter = x.counter * 2
print(x.counter)
del x.counter
另一种为实例对象所接受的引用属性是 方法。方法是“属于”一个对象的函数。(在 Python 中,方法不止是类实例所独有:其它类型的对象也可有方法。例如,链表对象有 append,insert,remove,sort 等等方法。然而,在后面的介绍中,除非特别说明,我们提到的方法特指类方法)
实例对象的有效名称依赖于它的类。按照定义,类中所有(用户定义)的函数对象对应它的实例中的方法。所以在我们的例子中,x.f 是一个有效的方法引用,因为 MyClass.f 是一个函数。但 x.i 不是,因为 MyClass.i 不是函数。不过 x.f 和 MyClass.f 不同,它是一个 方法对象 ,不是一个函数对象。