python里,创建实例时声明他的一个属性是另一个类的实例,但创建时并不给它赋值

class Person(object):
def init(self, name):
self.name = name

class Gun(object):
def init(self, name):
self.name = name

person = Person("Able")
gun = Gun("AK47")
person.gun = gun
如上,我想在创建person的时候给它声明一个gun属性,但并不想给它赋值,这要怎么搞?
怎么才能在.gun的时候能点出来并且.gun.name也能点出来

0

1个回答

在__init__()時設為None就可以了

程式碼如下:

class Gun:
    def __init__(self, name):
        self.name = name

class Person:
    def __init__(self, name):
        self.name = name
        self.gun = None

person = Person("Able")
gun = Gun("AK47")
person.gun = gun

print("person.name: %s" % person.name)
print("person.gun.name: %s" % person.gun.name)

-1
shajin3320
一笑尘缘了 谢谢~
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Python 面向对象编程基础(定义类并创建实例、创建实例属性、初始化实例属性、访问限制、类属性、属性名冲突、实例方法、类方法)
一、       Python面向对象编程 二、       python之定义类并创建实例 三、 在Python中,类通过 class 关键字定义。以 Person 为例,定义一个Person类如下: 四、 class Person(object): 五、     pass 六、 按照 Python 的编程习惯,类名以大写字母开头,紧接着是(object),表示该类是从哪个
Python----一个对象的属性可以是另外一个类型创建的对象
del 生命周期结束, 可以删除一个对象class Cat: """这是一个猫类""" def __init__(self, name): print("初始化开始...") self.name = name def eat(self): print("%s eat fish" % self.name) def drink(s
如何在一个类的实例被创建时调用它的内部方法!!!
package test; public class A { /* * 静态方法 * 在该类被初始化的时候,被编译好 * 但是初始化该类时不会被调用即输出“wo shi A” */ static void test(){ System.out.println("wo shi A中的test()方法,我在A创建实例时被调用了"); } /* * 将静态方法放在非静态代码块中
Python面向对象编程(创建实例属性,初始化实例属性,访问限制(__xxx))
1.面向对象概念 1.面向对象编程:程序设计的范式,把程序当成不同对象的相互调用 2.基本思想:类与实例 类:class 定义抽象的数据类型 人 class person: 实例 :根据类的定义创建出来的 林明道 = person() 区分不同的类型和实体变量 3.数据封装 在类中封装每一个实例的属性,不同的实例有相同的数据类型,但是有不同的属性 2.python中创建实例属性虽然可以通过Pe
定义类的时候,若是添加__init__方法,那么在创建类的实例的时候,实例会自动调用这个方法,一般用来对实例的属性进行初使化。
Python中 init的通俗解释?
一个类在另一个类中以集合形式声明为属性时应该注意的问题
标题:一个类在另一个类中以集合形式声明为属性时应该注意的问题,先解释一下,看下面的代码吧 [Serializable] public class MO_T_sj_quest { public List AnswerList { get; set; } public List IDList { get; set; } p
波哥学JAVA,定义类 声明属性 创建对象 实例化对象 对象调用属性或者方法
定义类 声明对象  创建对象 实例化对象 属性 对象调用属性或者方法 举例,下面定义类了一个类并声明属性,写了一个方法: class Person { public String name; //声明属性 public int age; //声明属性 //返回值 方法名(数据类型1 参数1,...) void talk(Stri
python中关于class类中一个实例变量的引用问题
在学习python的途中,学习到关于类的知识的时候遇到了一个问题。类的命名空间,类作用域内可以定义一些可供所有成员访问的变量,例如: class example:          count  = 0          def save(self): self.count++ 在上述代码中,count 可以供所有的example类的实例访问读取,那么有一个疑问,每个实例的count
原来可以在实例化类的时候直接给类中的属性赋值!!!!!!!
<br />            今天在看C#入门经典的时候突然发现了一个很有意思的例子,我在这里只写出自己的版本(因为不能复制)<br /> using System;<br />using System.Collections.Generic;<br />using System.Linq;<br />using System.Text;<br />namespace ConsoleApplication6<br />{<br />    class Customer<br />    {<br />
在创建线程时,必须要建立一个Thread类的或其子类的实例
本文讲述在学习Java多线程中需要学习的向线程传递数据的三种方法。由于线程的运行和结束是不可预料的,因此,在传递和返回数据时就无法象函数一样通过函数参数和return语句来返回数据。 在传统的同步开发模式下,当我们调用一个函数时,通过这个函数的参数将数据传入,并通过这个函数的返回值来返回最终的计算结果。但在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别。由于线
当一个类被加载时成员的初始化顺序
当一个流
Java类加载及创建实例(new)顺序
Java类加载 1.JVM( Java Virtual Machine,“Java虚拟机” )的类装载器ClassLoader(java类),包括系统类、扩展类、用户编写三种类加载器,负责将java的字节码文件从硬盘读取到JVM中(内存),即首次加载java类时,类的静态成员开辟空间,将常量池存放在方法区内存中,对常量池地址解析,并对java类的静态成员变量、静态块、静态方法进行一次初始化。
单例模式(一个类只能创建一个实例)
三个步骤:①通过new一个静态变量                   private static Single  single=new Single1();                   ②构造方法私有化                    private Single(){                    }                   ③新建一个公共获取对象
在一个类的属性为一个类(例如一个学生类的成绩属性为成绩类,成绩属性是科目加分数)
演示例题: 姓名   年龄    成绩 zhang3 18 物理:80,语文:70 li4    25 物理:80,语文:65 wang5  22 物理:75,语文:70 学生有一个行为,返回该学生的姓名和成绩的组合信息。 创建三个类,一个学生类,一个成绩类,一个测试类 成绩类: public class Grade {     private String brand;
浅谈new对象并给属性赋值,调用方法的内存机制
下面来看一段新建对象的简单代码:public class Student {    String name;    int age ;    public void play   (){        System.out.print(name+&quot;在玩耍&quot;)}    public void print(String sname){        System.out.print(name+&quot;在和&quot;...
Python怎么在一个文件中的类调用另一个文件中的类
在使用python的时候,总是习惯在一个文件里边写上所有类,这样应对于小数量的类的时候比较适合,但是当有很多很多类的时候,就会有点混乱了,所以需要把一些类分到不同的文件里,但是怎么从一个文件中的类调用另一个文件中的类呢? 这里是使用module,我们可以把被调用的类创造出来一个模块,比如说我现在想做一个通讯录,在最高层的类是Person,然后有一个Teacher类继承Person,我们就可以把P
Python学习:给类的实例绑定属性和方法
用C#的朋友都知道,我们创建了某个类的实例之后想给该实例其中一个属性赋值的话,这个属性必须在类中提前声明好,比如: public Class House { public int Width{get;set;} } House h = new House(); h.Width=50; 而在Python中,可以在没有声明属性和方法的情况下给类的实力绑定它们,比如我们有这样一个类:
python 类与实例
python 类与实例
Java创建类的实例的几种方法
Java创建类的实例的几种方法
一个类的对象做为另一个类的数据成员
  1、在c++中,当把一个类的对象作为另一个新类的数据成员时,定义格式为: class  X     {    类名1  成员名1;        类名2  成员名2;    其他成员;     } 2、如果一个类A的对象作为另一个类B的数据成员,则在类B的对象创建过程中,调用其构造函数的过程中,数据成员(类A的对象)会自动调用类A的构造函数。     但是应注...
5.12 将一个类的实例作为另一个类的属性 [Swift原创教程]
原文:http://coolketang.com/staticCoding/5a9925ad9f54542163e2e937.html1. 本节课将为你演示,将一个类的实例作为另一个类的属性。 2. 首先定义一个名为动物的类。 3. 然后给类添加一个名称属性,并设置它的默认值。 4. 添加一个年龄属性,并设置它的默认值。 5. 接着定义另一个类。 6. 然后依次给类添加两个属性,并设置它们的默认值...
Java单例设计模式(实现Java的一个类只有一个对象)
单例设计模式的定义:单例设计模式是一种软件设计模式,在它的核心包含一个称为单例类的核心类。核心便是希望一个类只有一个对象。
一个类的对象可以成为另一个类的数据成员
在慕课网学习类的封装 看着视频跟着老师敲代码感觉很简单 关掉视频自己敲 敲到一半发现敲不动; 然后又反复的看了几遍视频 最后知道了自己不会的原因 这是要求 其实老师是 实例化了两个坐标类的对象 然后放到Line类里作为 private 成员变量了———————————————————————— 下面是我自己敲的代码 总共有5个文件 首先是包含main函数的cpp文件#i
Java初学习 - 多态和实现接口的类的对象赋值给接口引用的方法
原文地址:http://blog.sina.com.cn/s/blog_50f0369c0100b567.html     接口的灵活性就在于“规定一个类必须做什么,而不管你如何做”。我们可以定义一个接口类型的引用变量来引用实现接口的类的实例,当这个引用调用方法时,它会根据实际引用的类的实例来判断具体调用哪个方法,这和上述的超类对象引用访问子类对象的机制相似。 /定义接口InterA inte
python学习之对象的创建
python是一种面向对象的语言,其中python的内部包含了几种内建对象类型(数字,字符串,列表,元组和字典)。同时python也可以创建自己的对象和函数。在说明如何创建自己的对象之前,首先说明其中几个重要的概念。 多态:是对不同的对象使用同样的操作,也就是说给每个对象定义同样的函数。例如对于元组和字典可以定义同样的函数count,以计算元组和字典的长度; 封装:对外部世界隐藏对象的工作细节
python里面建立类创建对象继承类
类的定义和继承
一个类把属性值赋值给另一个类的相同的属性
在Java开发中,会遇到从前台传过来的参数是一个类,这个类与数据库的实体类有些属性是一致的,有些是不一致的,为了避免相同属性赋值的麻烦,我们最好能有一个通用的复制方法。         下面这个类便可以帮我们实现(main方法是我用来测试用的,大家使用的时候把它去掉即可)。在Main方法中我给AppointmentOrderParam类初始化并赋值,然后想把这个类的值能够自动赋值给另一个类App
一种创建对象实例的类
类本身是一个单例,类的字段是其他类的对象引用Reference,类的属性包装该字段。当需要对象引用Reference时,使用该类的唯一实例构造。 public class ViewModelsHelper { private static readonly object _lock = new object(); private static ViewMo
Python中类的创建与使用实例
#coding=utf8 #为了使除法总是会返回真实的商,不管操作数是整形还是浮点型。 from __future__ import division ''' 类是面向对象编程的核心,它扮演相关数据及逻辑的容器角色。 定义类语法: class ClassName(base_class[es]): "optional documentation string"
深拷贝实例(一个类中包含另一个类的对象)
import java.util.*; /** * 深拷贝 * */ public class test { public static void main(String[] args){ String name = "张三"; int age = 15; Address ads = new Address(); a
C#控制台 在类进行实例化的时候初始化字段
慈心积善融学习,技术愿为有情学。善心速造多好事,前人栽树后乘凉。我今于此写经验,愿见文者得启发。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplicat
Python:类的声明两种方法
第一种方法: class Call: def setName(self,name): self.name=name def kick(self): print("my name is %s ,who call me "%self.name) a=Call() a.setName('DaDaniu') print(a.kick()) 第一
向类传递参数Python实例
下面的代码尝试了对一个类分别传list、int、其他类三种参数,然后改变原始参数,观察类参数的值是否一起发生变化。[python] view plain copyclass A(object):      def __init__(self, list):          self.test = list            l = [1, 2, 3]  a = A(l)  print a.t...
LVOOP(一)、如何创建类、属性和方法
如何创建类、属性和方法 LabVIEW类包括数据、属性和方法。其中数据是私有的,只能通过属性或方法来访问。 属性和方法的区别:属性强调的是静态的,而方法强调的是动态的,有很多时候完成的功能相同,具体用属性还是方法,因人而异。 下面以《LabVIEW宝典》第10章中的一个例子来说明类的创建和使用方法(本人初学,先照葫芦画瓢吧): 该例子实现的功能是一
一个类怎样调用另一个类中的属性和方法
一个类怎样调用另一个类中的属性和方法
python中的类,对象,方法,属性等介绍
注:这篇文章写得很好。加底纹的是我自己的理解 python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象。。。。。。   我们通过描述属性(特征)和行为来描述一个对象的。比如家里的小狗,它的颜色,大小,年龄,体重等是它的属性或特征。它会汪汪叫,会摇尾巴等是它的行为。 我们在描述一个真实对象(物体)时包括两
Java动态代理-创建动态类的实例对象及调用其方法
package com.mari.proxy;import java.lang.reflect.Constructor; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.util.ArrayList; imp
【转】python类、对象、方法、属性之类与对象笔记
python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象。。。。。。   我们通过描述属性(特征)和行为来描述一个对象的。比如家里的小狗,它的颜色,大小,年龄,体重等是它的属性或特征。它会汪汪叫,会摇尾巴等是它的行为。 我们在描述一个真实对象(物体)时包括两个方面: 它可以做什么(行为) 它是什么样的(属性或
thinking in java test chapter6练习(1)~(9)以及翻译问题
练习(1):在某个包中创建一个类,在这个类所处的包外部创建该类的实例。 代码如下:public class testTest6_1 { public static void main(String[] args){ test6_1 example = new test6_1("num1"); System.out.println(example.getN
Python中把类的实例变成一个可调用对象(__call__)
__call__ 在Python中,函数其实是一个对象: &amp;gt;&amp;gt;&amp;gt; f = abs &amp;gt;&amp;gt;&amp;gt; f.__name__ 'abs' &amp;gt;&amp;gt;&amp;gt; f(-123) 由于 f 可以被调用,所以,f 被称为可调用对象。 所有的函数都是可调用对象。 一个类实例也可以变成一个可调用对象,只需要实现一个特殊方法call()。 我们把 Person 类变成...
相关热词 c#串口测试应用程序 c# 匹配 正则表达式 c#防止窗体重绘 c#读写txt文件 c#挖地雷源代码 c#弹框选项 c# 移除 队列 c# 密码写入配置文件 c# 获取可用内存大小 c# 嵌入excel编辑