คำถามติดแท็ก object

วัตถุคือเอนทิตีที่สามารถจัดการได้โดยคำสั่งในภาษาการเขียนโปรแกรม วัตถุสามารถเป็นค่าตัวแปรฟังก์ชั่นหรือโครงสร้างข้อมูลที่ซับซ้อน ในการเขียนโปรแกรมเชิงวัตถุวัตถุหมายถึงอินสแตนซ์ของคลาส

8
Dictionary vs Object - ข้อใดมีประสิทธิภาพมากกว่าและเพราะเหตุใด
อะไรที่มีประสิทธิภาพมากกว่าใน Python ในแง่ของการใช้หน่วยความจำและการใช้ CPU - พจนานุกรมหรือวัตถุ? ความเป็นมา: ฉันต้องโหลดข้อมูลจำนวนมากลงใน Python ฉันสร้างวัตถุที่เป็นเพียงคอนเทนเนอร์ฟิลด์ การสร้างอินสแตนซ์ 4M และใส่ลงในพจนานุกรมใช้เวลาประมาณ 10 นาทีและหน่วยความจำ ~ 6GB หลังจากที่พจนานุกรมพร้อมใช้งานก็สามารถเข้าถึงได้ในพริบตา ตัวอย่าง: ในการตรวจสอบประสิทธิภาพฉันเขียนโปรแกรมง่ายๆสองโปรแกรมที่ทำเหมือนกัน - โปรแกรมหนึ่งใช้อ็อบเจกต์พจนานุกรมอื่น: วัตถุ (เวลาดำเนินการ ~ 18 วินาที): class Obj(object): def __init__(self, i): self.i = i self.l = [] all = {} for i in range(1000000): all[i] = Obj(i) พจนานุกรม (เวลาดำเนินการ …

5
จะเข้าถึงทรัพย์สินประเภทนิรนามใน C # ได้อย่างไร?
ฉันมีสิ่งนี้: List<object> nodes = new List<object>(); nodes.Add( new { Checked = false, depth = 1, id = "div_" + d.Id }); ... และฉันสงสัยว่าฉันสามารถคว้าคุณสมบัติ "ตรวจสอบแล้ว" ของวัตถุที่ไม่ระบุตัวตนได้หรือไม่ ฉันไม่แน่ใจว่าจะเป็นไปได้ไหม พยายามทำสิ่งนี้: if (nodes.Any(n => n["Checked"] == false)) ... แต่มันไม่ได้ผล ขอบคุณ

8
ฉันจะเข้าถึงคุณสมบัติของวัตถุจาวาสคริปต์ได้อย่างไรหากฉันไม่รู้ชื่อ
สมมติว่าคุณมีวัตถุจาวาสคริปต์ดังนี้: var data = { foo: 'bar', baz: 'quux' }; คุณสามารถเข้าถึงคุณสมบัติโดยใช้ชื่อคุณสมบัติ: var foo = data.foo; var baz = data["baz"]; แต่เป็นไปได้หรือไม่ที่จะได้รับค่าเหล่านี้หากคุณไม่ทราบชื่อคุณสมบัติ? ลักษณะที่ไม่เรียงลำดับของคุณสมบัติเหล่านี้ทำให้ไม่สามารถแยกออกจากกันได้หรือไม่? ในกรณีของฉันฉันกำลังคิดถึงสถานการณ์ที่ฟังก์ชันต้องยอมรับชุดของคู่ชื่อ - ค่า แต่ชื่อของคุณสมบัติอาจเปลี่ยนไป ความคิดของฉันเกี่ยวกับวิธีการทำสิ่งนี้คือการส่งชื่อคุณสมบัติไปยังฟังก์ชันพร้อมกับข้อมูล แต่มันให้ความรู้สึกเหมือนแฮ็ค ฉันอยากจะทำสิ่งนี้ด้วยการวิปัสสนาถ้าเป็นไปได้


13
จะอัปเดต "อาร์เรย์ของวัตถุ" ด้วย Firestore ได้อย่างไร
ตอนนี้ฉันกำลังลองใช้ Firestore และฉันติดอยู่กับสิ่งที่ง่ายมาก: "การอัปเดตอาร์เรย์ (หรือที่เรียกว่าเอกสารย่อย)" โครงสร้างฐานข้อมูลของฉันง่ายมาก ตัวอย่างเช่น: proprietary: "John Doe", sharedWith: [ {who: "first@test.com", when:timestamp}, {who: "another@test.com", when:timestamp}, ], ฉันกำลังพยายาม (ไม่ประสบความสำเร็จ) ที่จะผลักดันระเบียนใหม่ไปยังshareWithอาร์เรย์ของวัตถุ ฉันพยายามแล้ว: // With SET firebase.firestore() .collection('proprietary') .doc(docID) .set( { sharedWith: [{ who: "third@test.com", when: new Date() }] }, { merge: true } ) // With UPDATE firebase.firestore() .collection('proprietary') …

6
ทำลายวัตถุได้อย่างไร?
เท่าที่ฉันรู้ (ซึ่งน้อยมาก) มีสองวิธีดังนี้ $var = new object() แล้ว: // Method 1: Set to null $var = null; // Method 2: Unset unset($var); วิธีอื่นที่ดีกว่า? ฉันแยกขนอยู่ที่นี่หรือเปล่า?

5
จะซิงโครไนซ์ตัวแปรแบบคงที่ระหว่างเธรดที่รันอินสแตนซ์ของคลาสใน Java ได้อย่างไร
ฉันรู้ว่าการใช้synchronizeคีย์เวิร์ดก่อนที่เมธอดจะนำการซิงโครไนซ์ไปยังวัตถุนั้น นั่นคือ 2 เธรดที่รันอินสแตนซ์เดียวกันของออบเจ็กต์จะซิงโครไนซ์ อย่างไรก็ตามเนื่องจากการซิงโครไนซ์อยู่ที่ระดับอ็อบเจ็กต์ 2 เธรดที่รันอินสแตนซ์ที่แตกต่างกันของอ็อบเจ็กต์จะไม่ซิงโครไนซ์ หากเรามีตัวแปรคงที่ในคลาส Java ที่ถูกเรียกโดยวิธีการเราต้องการให้มันถูกซิงโครไนซ์ข้ามอินสแตนซ์ของคลาส อินสแตนซ์ทั้งสองกำลังทำงานใน 2 เธรดที่แตกต่างกัน เราสามารถทำการซิงโครไนซ์ด้วยวิธีต่อไปนี้ได้หรือไม่? public class Test { private static int count = 0; private static final Object lock= new Object(); public synchronized void foo() { synchronized(lock) { count++; } } } เป็นความจริงหรือไม่ว่าเนื่องจากเราได้กำหนดวัตถุlockที่เป็นแบบคงที่และเรากำลังใช้คีย์เวิร์ดsynchronizedสำหรับการล็อกcountนั้นตอนนี้ตัวแปรคงถูกซิงโครไนซ์ข้ามอินสแตนซ์ของคลาสแล้วTest?

4
การระบุวัตถุ R
ฉันมักจะจบลงด้วยฟังก์ชันที่สร้างเอาต์พุตซึ่งฉันไม่เข้าใจประเภทข้อมูลเอาต์พุต ฉันคาดหวังว่าจะได้รายการและจะกลายเป็นรายการหรือกรอบข้อมูลหรืออย่างอื่น วิธีการหรือขั้นตอนการทำงานที่ดีในการหาชนิดข้อมูลเอาต์พุตเมื่อใช้ฟังก์ชันครั้งแรกเป็นอย่างไร
120 r  object 

5
การใช้ usort ใน php ด้วยฟังก์ชันคลาสส่วนตัว
ok ใช้ usort กับฟังก์ชั่นไม่ซับซ้อน นี่คือสิ่งที่ฉันเคยมีมาก่อนในโค้ดเชิงเส้นของฉัน function merchantSort($a,$b){ return ....// stuff; } $array = array('..','..','..'); จัดเรียงฉันก็ทำ usort($array,"merchantSort"); ตอนนี้เรากำลังอัปเกรดโค้ดและลบฟังก์ชันส่วนกลางทั้งหมดและวางไว้ในตำแหน่งที่เหมาะสม ตอนนี้รหัสทั้งหมดอยู่ในคลาสและฉันไม่สามารถหาวิธีใช้ฟังก์ชัน usort เพื่อจัดเรียงอาร์เรย์ด้วยพารามิเตอร์ที่เป็น object method แทนที่จะเป็นฟังก์ชันง่ายๆ class ClassName { ... private function merchantSort($a,$b) { return ...// the sort } public function doSomeWork() { ... $array = $this->someThingThatReturnAnArray(); usort($array,'$this->merchantSort'); // ??? this is the …
119 php  arrays  sorting  object 

6
ฉันจะตั้งค่าและแยกย่อยสำหรับคลาส pytest ด้วยการทดสอบอย่างถูกต้องได้อย่างไร
ฉันใช้ซีลีเนียมในการทดสอบตั้งแต่ต้นจนจบและไม่สามารถหาวิธีใช้setup_classและteardown_classวิธีการได้ ฉันต้องตั้งค่าเบราว์เซอร์ในsetup_classวิธีการจากนั้นทำการทดสอบหลายชุดที่กำหนดเป็นวิธีการเรียนและในที่สุดก็ออกจากเบราว์เซอร์ในteardown_classวิธี แต่ในทางเหตุผลดูเหมือนว่าจะเป็นวิธีแก้ปัญหาที่ไม่ดีเพราะอันที่จริงการทดสอบของฉันจะใช้ไม่ได้กับคลาส แต่ใช้กับวัตถุ ฉันส่งselfพารามิเตอร์ในทุกวิธีการทดสอบดังนั้นฉันจึงสามารถเข้าถึงตัวแปรของวัตถุ: class TestClass: def setup_class(cls): pass def test_buttons(self, data): # self.$attribute can be used, but not cls.$attribute? pass def test_buttons2(self, data): # self.$attribute can be used, but not cls.$attribute? pass def teardown_class(cls): pass และดูเหมือนว่าจะไม่ถูกต้องในการสร้างอินสแตนซ์เบราว์เซอร์สำหรับคลาส .. มันควรจะสร้างสำหรับทุกออบเจ็กต์แยกกันใช่ไหม? ดังนั้นฉันต้องใช้__init__และ__del__วิธีการแทนsetup_classและteardown_class?
117 python  class  object  pytest 

12
อะไรคือความแตกต่างระหว่าง string primitives และ String objects ใน JavaScript?
นำมาจากMDN สตริงลิเทอรัล (แสดงโดยอัญประกาศคู่หรือเดี่ยว) และสตริงที่ส่งคืนจากการเรียกสตริงในบริบทที่ไม่ใช่ตัวสร้าง (กล่าวคือโดยไม่ใช้คีย์เวิร์ดใหม่) เป็นสตริงดั้งเดิม JavaScript จะแปลงวัตถุดั้งเดิมเป็นสตริงโดยอัตโนมัติเพื่อให้สามารถใช้วิธีการอ็อบเจ็กต์ String สำหรับสตริงดั้งเดิมได้ ในบริบทที่ต้องเรียกใช้เมธอดบนสตริงดั้งเดิมหรือการค้นหาคุณสมบัติเกิดขึ้น JavaScript จะตัดสตริงดั้งเดิมโดยอัตโนมัติและเรียกใช้เมธอดหรือดำเนินการค้นหาคุณสมบัติ ดังนั้นฉันคิดว่าการดำเนินการ (เชิงตรรกะ) (การเรียกใช้เมธอด) บนสตริงดั้งเดิมควรจะช้ากว่าการดำเนินการกับสตริงอ็อบเจกต์เนื่องจากสตริงดั้งเดิมใด ๆ ถูกแปลงเป็นสตริงอ็อบเจ็กต์ (งานพิเศษ) ก่อนที่methodจะนำไปใช้กับสตริง แต่ในกรณีทดสอบนี้ผลลัพธ์กลับตรงกันข้าม ป้องกันรหัส-1วิ่งเร็วกว่าบล็อก-2 รหัสทั้งบล็อกรหัสจะได้รับดังนี้ รหัสบล็อก -1: var s = '0123456789'; for (var i = 0; i < s.length; i++) { s.charAt(i); } รหัสบล็อก -2: var s = new String('0123456789'); for …

2
ฉันจะเข้าถึงคุณสมบัติวัตถุนี้ด้วยชื่อที่ผิดกฎหมายได้อย่างไร
ฉันใช้คลาส PHP ที่มีคนเขียนเพื่อเชื่อมต่อกับ BaseCamp API การโทรเฉพาะที่ฉันทำคือการดึงข้อมูลในรายการสิ่งที่ต้องทำซึ่งใช้ได้ดี ปัญหาของฉันคือฉันไม่แน่ใจว่าจะเข้าถึงเฉพาะtodo-itemsคุณสมบัติของวัตถุที่ส่งคืนได้อย่างไร นี่คือ var_dump ของวัตถุที่ส่งคืน: object(stdClass)[6] public 'completed-count' => string '0' (length=1) public 'description' => string 'Description String' (length=89) public 'id' => string '12345' (length=7) public 'milestone-id' => string '' (length=0) public 'name' => string 'Error Reports' (length=13) public 'position' => string '1' (length=1) public …
115 php  object 

7
การบันทึกและการโหลดวัตถุและการใช้ดอง
ฉันกำลังพยายามบันทึกและโหลดวัตถุโดยใช้pickleโมดูล ก่อนอื่นฉันประกาศวัตถุของฉัน: >>> class Fruits:pass ... >>> banana = Fruits() >>> banana.color = 'yellow' >>> banana.value = 30 หลังจากนั้นฉันเปิดไฟล์ชื่อ 'Fruits.obj' (ก่อนหน้านี้ฉันสร้างไฟล์. txt ใหม่และฉันเปลี่ยนชื่อ 'Fruits.obj'): >>> import pickle >>> filehandler = open(b"Fruits.obj","wb") >>> pickle.dump(banana,filehandler) หลังจากทำสิ่งนี้ฉันปิดเซสชันของฉันและฉันเริ่มต้นใหม่และฉันใส่ครั้งต่อไป (พยายามเข้าถึงวัตถุที่ควรจะบันทึก): file = open("Fruits.obj",'r') object_file = pickle.load(file) แต่ฉันมีข้อความนี้: Traceback (most recent call last): File "<stdin>", line …
115 python  object  pickle 


5
ฉันจะเข้าถึงวัตถุ JavaScript ที่มีช่องว่างในคีย์ของวัตถุได้อย่างไร
ฉันมีวัตถุ JavaScript ที่มีลักษณะดังนี้: var myTextOptions = { 'cartoon': { comic: 'Calvin & Hobbes', published: '1993' }, 'character names': { kid: 'Calvin', tiger: 'Hobbes' } } ฉันสามารถเข้าถึงคุณสมบัติของการcartoonใช้งานได้อย่างง่ายดายmyTextOptions.cartoon.comicหรืออะไรก็ตาม อย่างไรก็ตามฉันไม่สามารถรับไวยากรณ์ที่ถูกต้องสำหรับการเข้าถึงkidได้ ฉันได้ลองทำสิ่งต่อไปนี้โดยไม่มีโชค: myTextOptions.character names.kid myTextOptions."character names".kid myTextOptions.character\ names.kid myTextOptions.'character names'.kid myTextOptions.["character names"].kid myTextOptions.character%20names.kid
113 javascript  object 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.