python accessiblechildren用法_python类继承用法实例分析

本文详细介绍了Python中类的继承概念,包括基类、子类的定义以及方法的调用。通过实例展示了如何使用__init__初始化方法、类变量以及私有方法。文章还演示了如何改变实例属性并验证了继承的特性,如子类可以继承父类的方法和变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文实例讲述了python类继承用法。分享给大家供大家参考。具体如下:

help('object') # test

class Class1(object):

"""

Class1 inherits the most basic container class object (just a place holder)

this is the newer class writing convention, adding (object) is "still" optional

"""

k = 7

def __init__(self, color='green'):

"""

Special method __init__() is called first (acts as Constructor).

It brings in data from outside the class like the variable color.

(in this case color is also set to a default value of green)

The first parameter of any method/function in the class is always self,

the name self is used by convention. Assigning color to self.color allows it

to be passed to all methods within the class. Think of self as a carrier,

or if you want impress folks call it target instance object.

The variable k is assigned a value in the class, but outside of the methods.

You can access k in a method using self.k

"""

self.color = color

def Hello1(self):

print "Hello from Class1!"

def printColor(self):

"""in this case self allows color to be passed"""

print "I like the color", self.color

def __localHello(self):

"""

A variable or function with a double underline prefix and no or max. single

underline postfix is considered private to the class and is not inherited or

accessible outside the class.

"""

print "A hardy Hello only used within the class!"

class Class2(Class1):

"""

Class2 inherits Class1 (Class2 is the subclass, Class1 the base or superclass)

Class1 has to be coded before Class2 for this to work!!!

Class2 can now use any method of Class1, and even the variable k

"""

def Hello2(self):

print "Hello from Class2!"

print self.k, "is my favorite number"

# the color blue is passed to __init__()

c1 = Class1('blue')

# Class2 inherited method __init__() from Class1

# if you used c2 = Class2(), the default color green would be picked

c2 = Class2('red')

print '-'*20

print "Class1 says hello:"

c1.Hello1()

print '-'*20

print "Class2 says a Class1 hello:"

c2.Hello1()

print '-'*20

print "Class2 says its own hello:"

c2.Hello2()

print '-'*20

print "Class1 color via __init__():"

c1.printColor()

print '-'*20

print "Class2 color via inherited __init__() and printColor():"

c2.printColor()

print '-'*20

print "Class1 changes its mind about the color:"

c1 = Class1('yellow') # same as: c1.__init__('yellow')

c1.printColor()

print '-'*20

print "Wonder what Class2 has to say now:"

c2.printColor()

print '-'*20

# this would give an error! Class1 does not have a method Hello2()

if hasattr(Class1, "Hello2"):

print c1.Hello2()

else:

print "Class1 does not contain method Hello2()"

# check inheritance

if issubclass(Class2, Class1):

print "Class2 is a subclass of Class1, or Class2 has inherited Class1"

# you can access variable k contained in Class1

print "Variable k from Class1 =", c1.k

print '-'*20

# this would give an error! You cannot access a class private method

if hasattr(Class1, "__localHello()"):

print c1.__localHello()

else:

print "No access to Class1 private method __localHello()"

运行结果如下:

Help on class object in module __builtin__:

class object

| The most base type

--------------------

Class1 says hello:

Hello from Class1!

--------------------

Class2 says a Class1 hello:

Hello from Class1!

--------------------

Class2 says its own hello:

Hello from Class2!

7 is my favorite number

--------------------

Class1 color via __init__():

I like the color blue

--------------------

Class2 color via inherited __init__() and printColor():

I like the color red

--------------------

Class1 changes its mind about the color:

I like the color yellow

--------------------

Wonder what Class2 has to say now:

I like the color red

--------------------

Class1 does not contain method Hello2()

Class2 is a subclass of Class1, or Class2 has inherited Class1

Variable k from Class1 = 7

--------------------

No access to Class1 private method __localHello()

希望本文所述对大家的Python程序设计有所帮助。

希望与广大网友互动??

点此进行留言吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值